很重要--轉載聲明spa
- 本站文章無特別說明,皆爲原創,版權全部,轉載時請用連接的方式,給出原文出處。同時寫上原做者:朝十晚八 or Twowords
- 如要轉載,請原文轉載,如在轉載時修改本文,請事先告知,謝絕在轉載時經過修改本文達到有利於轉載者的目的。
qt 如何捕獲全屏的鼠標事件,這個帖子上面主要講述了下嵌入式qt怎麼抓取系統級消息,不過從這篇文章中我也看到了但願,有個回覆說winEventFilter支持這種方式,而後我就順着這個線索找到了nativeEventFilter方法,最終試驗成功。
首先是讓你本身的類繼承自QAbstractNativeEventFilter,而後經過QCoreApplication來註冊你的窗口類,代碼以下:
app.installNativeEventFilter(m_MainWindow);
最後在nativeEventFilter方法中就能獲取到系統級事件,個人qt5.5.觀看qt的幫助文檔,如圖1所示
html
圖1windows
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所示
app
圖2post