如何将eventFilter安装到Qt中的WinOS窗口?
我在Qt中获得了WinOS窗口的句柄,例如internetexplorer窗口。我是这样做的:如何将eventFilter安装到Qt中的WinOS窗口?,qt,Qt,我在Qt中获得了WinOS窗口的句柄,例如internetexplorer窗口。我是这样做的:m_hwndUnderCursor=WindowFromPoint(curPoint) 如何通过QWidget::find(m_hwndUnderCursor)->installEventFilter(this)将eventFilter安装到m_hwndUnderCursor成功,这样我就可以在Qt中观看mhwndundercursor,而无需使用HOOK技术 我知道,因为m_-hwnundercurs
m_hwndUnderCursor=WindowFromPoint(curPoint)代码>
如何通过QWidget::find(m_hwndUnderCursor)->installEventFilter(this)将eventFilter安装到m_hwndUnderCursor编码>成功,这样我就可以在Qt中观看mhwndundercursor,而无需使用HOOK技术
我知道,因为m_-hwnundercursor指向WinOS窗口的指针,所以QWidget::find(m_-hwnundercursor)总是返回NULL。有什么办法吗?一个简单的答案是:你不能这样做
更详细的回答是:
QObject::installEventFilter()
基于Qt的事件引擎(事件循环、事件传播等)工作。这是Qt的内部内容,在Qt应用程序之外的其他窗口中不可用。它只适用于您从中调用的同一应用程序中的windows
出于类似的原因,如果您尝试查找非Qt窗口,则QWidget::find()
将永远不会在结果中提供现有的QWidget
。它仅适用于在Qt应用程序中创建的窗口。另请参见:
您必须使用本机Windows API处理此问题。谢谢。本机Windows API似乎是我唯一的选择。