自定義按鍵響應QComboBox選擇選項的方法


最近做一個Qt項目,界面中有一個QComboBox,這里稱為combobox。要求不用鼠標操作,用按鍵,在combobox未彈出菜單的情況,按上下左右鍵是選擇另外widget,在彈出菜單的情況下,是選擇選項。

因為要求界面中的各個widget必須要能夠按照自己定義的順序被選取(按上下左右鍵),所以只能自己重寫按鍵響應,於是我給combobox安裝了過濾器,自己對combobox進行按鍵響應。

有兩個難點:

1.如果判斷combobox是彈出了菜單還是未彈出菜單的狀態

2.如果在彈出菜單的情況下,如何在對上下移動做按鍵響應(也就是高亮指定的項)


1.在多次試驗的情況我發現combobox->view()->isVisable()可以用來判斷是否是彈出了菜單。


2.試了很多種辦法都沒法解決。

  最后在查閱了源代碼的情況下,發現彈出的菜單是由combobox中的view來管理的。而view有一個selectionModel是用來管理選項的高亮的。終於找到了正確的使用方法。

combobox->view()->selectionModel()->setCurrentIndex(combobox->model()->index(index,combobox->modelColumn(),combobox->rootModelIndex()),QItemSelectionModel::ClearAndSelect);

 

也許還有更好的辦法,或者是我走入了死胡同,暫時先這么着吧。


補充說明,查看源代碼之后,comboBox自己默認的按鍵響應里會響應QEvent::ShortCutOverride這個事件,當按下ENTER,RETURN鍵時會響應此事件執行hidePopup()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM