Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将eventFilter安装到Qt中的WinOS窗口?_Qt - Fatal编程技术网

如何将eventFilter安装到Qt中的WinOS窗口?

如何将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

我在Qt中获得了WinOS窗口的句柄,例如internetexplorer窗口。我是这样做的:
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似乎是我唯一的选择。