【发布时间】:2013-07-13 01:59:55
【问题描述】:
我想检测对QPlainTextEdit 小部件的点击。最终目标是启动一个虚拟键盘小部件。顺便说一句,QPlainTextEdit 小部件在 QT ui 文件中描述并由QUiLoader 加载。我尝试为QPlainTextEdit 小部件安装一个事件处理程序,以便捕获QEvent::FocusIn 事件。不幸的是,这个事件被反复触发,而不仅仅是一次。
注意:我使用的是 QT 4.8。
更新
我找到了tutorial/example,它显示了如何为文本输入小部件启动软件输入面板。不幸的是,输入面板在打开后立即关闭。基本上,QEvent::CloseSoftwareInputPanel 事件在QEvent::RequestSoftwareInputPanel 之后不久就会被触发。
【问题讨论】:
-
你的方法是正确的。尝试为 FocusIn 和 FocusOut 添加调试输出。可能是小部件正在获得和失去焦点。您是否检查了
eventFilter(object, event)中的object参数?可能是您遇到了来自其他过滤对象的焦点事件。 -
你是对的。小部件正在获得和失去焦点(我想知道为什么)。顺便说一句,
QEvent::MouseButtonPress没有在QPlainTextEdit小部件上引发(我试过)。