在QComboBox中添加QCheckBox

前期准备:
(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
        {
            //如果没选中
        }

    }

}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值