1. 程式人生 > >自定義實現復選框

自定義實現復選框

列表 setw 屬於 隱藏 對象 p12 時間 下拉框 tar

項目中需要用到復選框,而QComboBox只能實現單選操作。即使是加以改造可以多選,也只能一次選擇一個選項,不符合項目需求。於是就花了兩天時間來自己實現一個可行的復選框。

實現方案:QLineEdit + QListView + QPushButton

第一步是實現類似於QComboBox的顯示框。

一個只讀的QLineEdit + QPushButton就可以實現。這個QPushButton對象的父指針必須是QLineEdit,這樣按鈕才能浮在QLineEdit上。

需要根據實現界面大小計算按鈕的起始位置。

第二步實現下拉框。

QListView + QStandardItemModel 框架可以簡單的實現這個復選功能。底部還添加兩個按鈕:確定和取消。用於選擇完之後的操作。

需要註意的是要設置這個窗體的屬性 setWindowFlags(Qt::Popup);

這個屬性可以確保在下拉列表失去焦點時,會觸發隱藏操作(hide)

第三步是把前兩個實現的控件變成一個整體。第二個控件不能設父指針,它不屬於界面任何部分。

代碼的實現還是很簡單的。

具體的你可以參考 GitHub 上的實現,在MyMulitComboBox有完整的實現代碼。

自定義實現復選框