Qt自定義彈出式菜單(Qt自定義彈窗)


 

 

 需求:寫一個自定義彈出菜單,

1、單擊按鈕時展現,單擊空白處或再次單擊按鈕則隱藏

2、菜單內容可以是自定義的widget

3、可以自定義彈出菜單的方向

(可以參考用來實現至任意組件的下拉框)

 

解決思路:

由於要自定義彈出菜單的方向,而QToolButton的showMenu無法自定義彈出方向,所以一開始想到的方案是

1、QToolButton+獨立的QMenu,QToolButton收到單擊事件時調用QWidget的show;這樣做會發現一個問題,盡管單擊空白處可以隱藏彈窗,但是再次單擊按鈕的時候這個彈窗會又一次彈起(彈窗的隱藏總會先於單擊事件的處理),無法滿足要求1。

2、QToolButton+自定義QWidget的方案,單擊空白隱藏不好控,且容易出現方案1的問題。

解決方案:

要求1可以通過QToolButton的showMenu滿足(QToolButton+自定義QWidget的方案行不通);

要求2可以通過QWidgetAction滿足;

要求3可以通過通過子類化QMenu,在showEvent中移到相應的位置滿足;

github:Demo_QMenu


免責聲明!

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



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