qt 如何捕獲全屏的鼠標事件,這個帖子上面主要講述了下嵌入式qt怎么抓取系統級消息,不過從這篇文章中我也看到了希望,有個回復說winEventFilter支持這種方式,然后我就順着這個線索找到了nativeEventFilter方法,最終試驗成功。
首先是讓你自己的類繼承自QAbstractNativeEventFilter,然后通過QCoreApplication來注冊你的窗口類,代碼如下:
app.installNativeEventFilter(m_MainWindow);
最后在nativeEventFilter方法中就能獲取到系統級事件,我的qt5.5.觀看qt的幫助文檔,如圖1所示
圖1
bool CCailianMainWindow::nativeEventFilter(const QByteArray & eventType, void * message, long * result)
{
if (eventType == "windows_generic_MSG" || eventType == "windows_dispatcher_MSG")
{
MSG * pMsg = reinterpret_cast<MSG *>(message);
if (pMsg->message == WM_NCMOUSEMOVE)
{
//獲取到系統鼠標移動,可以做像qq一樣的忙碌檢測
}
}
return false;
}
調試結果如圖2所示
圖2