QT控件获得焦点问题

gcc9999999 2012-05-22 08:08:06
高手帮个忙啊,,,

主窗口是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是虚拟键盘类的对象

还有一个问题就是:这个虚拟键盘窗口没有在主窗口的中间,,而是偏移了,,
...全文
1160 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
白羊座 2012-05-23
  • 打赏
  • 举报
回复
可以试一下:当你捕捉到Esc键后,调用QWidget::clearFocus()让LineEdit失去焦点。
jdwx 2012-05-22
  • 打赏
  • 举报
回复
void QWidget::mousePressEvent ( QMouseEvent * event ) [virtual protected]
void QWidget::mouseReleaseEvent ( QMouseEvent * event ) [virtual protected]
gcc9999999 2012-05-22
  • 打赏
  • 举报
回复
我用什么事件,能达到这种效果呢,,
就是一点输入框弹出键盘,,,

输入框没有这种类型的啊,,
没有单击事件啊,,,
jdwx 2012-05-22
  • 打赏
  • 举报
回复
关闭虚拟键盘,又出来一个虚拟键盘,因为你控制虚拟键盘显示的事件是"获得焦点",虚拟键盘一关闭,焦点又回来了,自然又会出来一个。换个事件吧。

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

16,226

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧