1. 程式人生 > >Qt 視窗非啟用狀態獲取鍵盤事件

Qt 視窗非啟用狀態獲取鍵盤事件

在多個視窗一起存在時,其中一個視窗需要一直獲取鍵盤事件:

可以在這個視窗中捕獲鍵盤事件,即grabKeyboard(); 這樣這個視窗可以一直獲取鍵盤事件。即使這個視窗不在啟用狀態下依然可以獲取鍵盤事件。同時啟用狀態的視窗是獲取不到任何鍵盤事件的,直到捕獲了鍵盤事件的視窗釋放鍵盤事件releaseKeyboard(),才能獲取鍵盤事件。

grabKeyboard()     //捕獲鍵盤事件

releaseKeyboard()   //釋放鍵盤事件

類似的還有滑鼠事件的捕獲和釋放,其成員函式如下:

void grabMouse();        // 捕獲滑鼠事件  

void releaseMouse();    // 釋放滑鼠事件  

        對鍵盤事件和滑鼠事件的捕獲是相互獨立的。這裡要注意兩點:一是如果有另外一個視窗進行了捕獲操作,則當前處於捕獲狀態的視窗將失去對事件的捕獲;二是隻有可見的窗口才能進行輸入事件捕獲。