当前位置: 代码迷 >> QT开发 >> QT控件获得焦点有关问题
  详细解决方案

QT控件获得焦点有关问题

热度:18   发布时间:2016-04-25 04:47:33.0
QT控件获得焦点问题
高手帮个忙啊,,,

主窗口是QWidget 

主窗口中有多个 QLineEdit 

当点击QLineEdit 弹出虚拟键盘


但是QLineEdit被重写了,, 

void LineEdit::focusInEvent(QFocusEvent *event)
{
  this->setText("dddddd"); //当lineEdit获得焦点时,显示ddddd
  Input *input = new Input((QWidget*)this->parent(),0); //虚拟键盘
  input->setVisible(true); //显示虚拟键盘
}
当获得焦点的时候则弹出虚拟键盘,也就是input对象,,

当单击ESC 的时候就关闭虚拟键盘,,问题是这个虚拟键盘关闭不了,
关闭了又弹出来了一个,,,点ESC关闭会弹出更多,input是虚拟键盘类的对象

还有一个问题就是:这个虚拟键盘窗口没有在主窗口的中间,,而是偏移了,,

------解决方案--------------------
关闭虚拟键盘,又出来一个虚拟键盘,因为你控制虚拟键盘显示的事件是"获得焦点",虚拟键盘一关闭,焦点又回来了,自然又会出来一个。换个事件吧。

虚拟键盘不在窗口中间,自己把它move过去不就行了,不就是多写一行代码。不过也不应该在屏幕中间,应该跟着有焦点的输入控件移动,要不然会挡住控件的。
  相关解决方案