在项目开发中,使用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来记录已选的选项。关于对控件的其他操作例如增加和删除一个选项的代码这里就不贴了。
更多技术和资源分享,请关注我的公众号 “非正经码农”: