前期准备:
(1)建立一个成员变量:
QListWidget *pListWidget =nullptr;
(2)这里假设已经在ui建立了一个对象名为comboBox的QComboBox,可以通过ui->comboBox调用。
以下为含有QCheckBox的comboBox的效果
这里提供两个函数:
(1)void setBoxNumber(int number);
用来往已有QComboBox中添加QCheckBox,参数number就是QCheckBox的数目;
(2)void slot_stateChanged();
为槽函数,得到所有QCheckBox的勾选状态,以根据个人需求执行进一步的操作。
以下为两个函数源码:
void setBoxNumber(int number)
{
pListWidget = new QListWidget;
pListWidget ->setObjectName(QString("listWidget_wkshop"));
for(int i=0; i< number; i++)
{
QListWidgetItem *item = new QListWidgetItem();
QCheckBox *chkBox = new QCheckBox();
chkBox->setChecked(true);
chkBox->setText("checkBox"+QString::number(i+1));
pListWidget ->addItem(item);
pListWidget ->setItemWidget(item, chkBox);
connect(chkBox,SIGNAL(stateChanged(int)),this,SLOT(slot_stateChanged()));
}
ui->comboBox->setModel(pListWidget ->model());
ui->comboBox->setView(pListWidget);
}
void slot_stateChanged()
{
QObject *object = QObject::sender();
QCheckBox *pSenderCheckBox = static_cast<QCheckBox*>(object);
for(int i=0; i< pListWidget->count(); i++)
{
QListWidgetItem *pItem = pListWidget->item(i);
QWidget *pWidget = pListWidget->itemWidget(pItem);
QCheckBox *pCheckBox = (QCheckBox *)pWidget;
if (pCheckBox->isChecked())
{
//如果选中
}else
{
//如果没选中
}
}
}