[英]How to install a eventFilter to a WinOS window in Qt?
我有一个WinOS窗口的句柄,例如。 Qt.I中的Internet Explorer窗口以这种方式完成: m_hwndUnderCursor= WindowFromPoint(curPoint);
如何通过QWidget::find(m_hwndUnderCursor)->installEventFilter(this);
将eventFilter安装到m_hwndUnderCursor QWidget::find(m_hwndUnderCursor)->installEventFilter(this);
成功了,这样我就可以在没有HOOK技术的情况下在Qt中观看m_hwndUnderCursor 。
我知道因为m_hwndUnderCursor是指向WinOS窗口的指针所以QWidget :: find(m_hwndUnderCursor)总是返回NULL。 有办法吗?
一个快速的答案是:你不能这样做。
一个更详细的答案:
QObject::installEventFilter()
基于Qt的事件引擎(事件循环,事件传播等)工作。 这是Qt的内部资源,在Qt应用程序之外的其他窗口中无法使用。 它只适用于您正在调用installEventFilter()
的同一应用程序的一部分的窗口。
出于类似的原因,如果您尝试查找非Qt窗口, QWidget::find()
将永远不会在结果中为您提供现有的QWidget
。 它仅适用于在Qt应用程序中创建的窗口。 另请参阅: QWidget :: find可以从不同的进程中查找小部件吗?
您将不得不使用本机Windows API处理它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.