1. 程式人生 > >qt捕獲按鍵之無響應

qt捕獲按鍵之無響應

qt程式設計之捕獲按鍵無響應:

按鍵無響應一般是沒有獲取到焦點,因此下面首先介紹一個屬性,QWidget以及介面中的每個控制元件都有focusPolicy屬性,用於更改獲取焦點的方式,具體如下:

Qt::TabFocus      //通過Tab鍵獲得焦點

Qt::ClickFocus     //通過單擊獲得焦點

Qt::StrongFocus  //通過以上兩種方式(即Tab鍵或單擊)均可獲得焦點

Qt::NoFocus        //不能通過以上兩種方式獲得焦點(如不更改預設為此屬性),但可以通過setFocus獲取焦點,下面將詳細介紹

下面介紹實際開發中遇到的特殊情況:

1問題描述:

        裝置使用普通LCD顯示屏,使用物理按鍵,但是不能通過觸控(可通過觸控式螢幕幕代替單擊)或者按下Tab鍵獲得焦點,從而不能進入KeyPressEvent函式捕獲按鍵。

1解決方案:

        增加showEvent函式放在KeyPressEvent函式之前,通過setFocus()語句可以在捕獲按鍵之前獲得焦點,這樣執行出來的介面便無需操作直接可以捕獲按鍵作出相應。

2問題描述:

        在問題1的基礎上解決問題之後,筆者在主介面通過按鍵呼叫顯示子介面後,子介面又遇到了問題1,即使運行了setFocus也不能獲得焦點。

2解決方案:

        在主介面跳轉之前,即在show子介面之前,先加一句setFocus,使焦點轉到子介面即可解決。