自定義實現復選框
阿新 • • 發佈:2018-01-12
列表 setw 屬於 隱藏 對象 p12 時間 下拉框 tar
項目中需要用到復選框,而QComboBox只能實現單選操作。即使是加以改造可以多選,也只能一次選擇一個選項,不符合項目需求。於是就花了兩天時間來自己實現一個可行的復選框。
實現方案:QLineEdit + QListView + QPushButton
第一步是實現類似於QComboBox的顯示框。
一個只讀的QLineEdit + QPushButton就可以實現。這個QPushButton對象的父指針必須是QLineEdit,這樣按鈕才能浮在QLineEdit上。
需要根據實現界面大小計算按鈕的起始位置。
第二步實現下拉框。
QListView + QStandardItemModel 框架可以簡單的實現這個復選功能。底部還添加兩個按鈕:確定和取消。用於選擇完之後的操作。
需要註意的是要設置這個窗體的屬性 setWindowFlags(Qt::Popup);
這個屬性可以確保在下拉列表失去焦點時,會觸發隱藏操作(hide)
第三步是把前兩個實現的控件變成一個整體。第二個控件不能設父指針,它不屬於界面任何部分。
代碼的實現還是很簡單的。
具體的你可以參考 GitHub 上的實現,在MyMulitComboBox有完整的實現代碼。
自定義實現復選框