在項目開發中,使用qt的原生控件可能打不到產品的需求。所以我們會經常自定義一些控件,以達到我們想要的效果。這個系列主要積累一些本人自定義過的控件的開發。
可複選的ComboBox,如下圖所示:
如上,這個ComboBox下拉後,它是有複選框的,所以可以多選。這種控件很適合當複選項很多的情況下使用,節省了很多空間。
這裏使用的核心控件有QListWidgetItem、QCheckBox。主要是將QCheckBox作爲QListWidget的QListWidgetItem加入進去。
m_pListWidget = new QListWidget();
QListWidgetItem* pItem = new QListWidgetItem(m_pListWidget);
m_pListWidget->addItem(pItem);
QCheckBox *pCheckBox = new QCheckBox();
pCheckBox->setText(tr("Select all"));
m_pListWidget->addItem(pItem);
m_pListWidget->setItemWidget(pItem, pCheckBox);
this->setModel(m_pListWidget->model());
this->setView(m_pListWidget);
this->setEditable(true);
this->lineEdit()->setReadOnly(true);
如上,使用setItemWidget將QCheckBox具體話爲QListWidget的一個元素,並添加進去,這樣就可以看到一個可選的複選框。
同理,當有多個的時候,按照同樣的方式將其加入到QListWidget中就可以了。然後就是選擇複選框後,可以使用QList來記錄已選的選項。關於對控件的其他操作例如增加和刪除一個選項的代碼這裏就不貼了。
更多技術和資源分享,請關注我的公衆號 “非正經碼農”: