【发布时间】:2015-05-28 19:16:06
【问题描述】:
当父小部件定义为:
setWindowFlags(Qt::FramelessWindowHint | Qt::Popup);
任何放置在其顶部的编辑框小部件都不会接收键盘输入。鼠标可以工作,右键单击,上下文菜单,粘贴可以工作——但不能直接键盘输入。任何想法为什么以及如何解决它?
【问题讨论】:
-
我无法在 Windows 7 上使用 Qt Creator 2.3.1 和 Qt 4.7.4 重现您的问题。我所拥有的只是一个 QMainWindow,其中一个小部件是 QLineEdit - 我在 QMainWindow 上调用了你的 setWindowFlags(line)。效果很好 - 我可以输入文字,没问题。
-
我的应用程序上的容器窗口不是主窗口。也许这会有所不同。另一个论坛上的一个人建议他有一个类似的问题,当他激活容器窗口时这个问题得到了解决。会试一试并在这里发布我的结果。
-
我也有同样的问题。我有一个从 QDialog 派生的简单类,在构造函数中我将 Qt::WindowFlags 设置为 Qt::Popup。看来这是一个Qt错误。 Windows 7,Qt 4.8 => 工作正常。 Windows 7、Qt 5.4 => 不起作用。 Windows 8、Qt 5.4 => 不起作用。但是,如果我设置断点并暂停执行一段时间(在 showEvent( QShowEvent* ) 中)然后继续执行,我可以以所需的方式使用该 QLineEdit。
标签: qt