文章目录
一、下拉列表框插入复选框示例图
下图为带复选框的下拉列表框示例图,其中包含添加项,选中项,勾选复选框等操作。
提示:不会使用Qt设计师设计界面的小伙伴点击这里
二、源码
ComboBoxTest.h
#ifndef COMBOBOXTEST_H#define COMBOBOXTEST_H#include<QWidget>#include<QListWidget>namespace Ui {classComboBoxTest;}classComboBoxTest:public QWidget
{
Q_OBJECT
public:explicitComboBoxTest(QWidget *parent =nullptr);~ComboBoxTest();private slots:/**
* @brief on_addBtn_clicked 添加item按钮点击槽函数
*/voidon_addBtn_clicked();/**
* @brief on_comboBox_currentIndexChanged 下拉列表框切换选项槽函数
* @param index 切换后的index索引位置
*/voidon_comboBox_currentIndexChanged(int index);private:
Ui::ComboBoxTest *ui;
QListWidget *m_listWidget;// 下拉列表框的};#endif// COMBOBOXTEST_H
ComboBoxTest.cpp
#include"ComboBoxTest.h"#include"ui_ComboBoxTest.h"#include<QCheckBox>
ComboBoxTest::ComboBoxTest(QWidget *parent):QWidget(parent),ui(new Ui::ComboBoxTest){
ui->setupUi(this);// 设置窗口标题this->setWindowTitle("ComboBox带复选框");// 创建QListWidget对象空间
m_listWidget =new QListWidget;// 要先设置model,然后在设置view,我测试时反过来设置会崩掉哦//! 将comboBox的model对象设置为QListWidget对象的model//! 因为QListWidget继承QListView所以其存在model对象
ui->comboBox->setModel(m_listWidget->model());//! 将comboBox的view对象设置为QListWidget对象//! 因为QListWidget继承QListView所以相当于View
ui->comboBox->setView(m_listWidget);//! 此处添加一个空item用于当默认值// 创建QListWidgetItem对象并指定父对象
QListWidgetItem *item =newQListWidgetItem(m_listWidget);// 将item添加到QListWidget对象中
m_listWidget->addItem(item);}
ComboBoxTest::~ComboBoxTest(){//释放QListWidget、ui的存储空间delete m_listWidget;delete ui;}void ComboBoxTest::on_addBtn_clicked(){// 获取要添加item上显示的文本
QString text = ui->lineEdit->text();// 当文本为空时直接返回,不添加if(text.isEmpty()){return;}//! 创建复选框对象空间//! 创建时指定复选框的父对象,其父对象在释放时会将其中的子对象指针先释放
QCheckBox *checkBox =newQCheckBox(m_listWidget);// 创建QListWidgetItem对象并传入文本和指定父对象
QListWidgetItem *item =newQListWidgetItem(text, m_listWidget);//设置item文本居中
item->setTextAlignment(Qt::AlignCenter);//将item添加到QListWidget对象中
m_listWidget->addItem(item);//将复选框设置到item中
m_listWidget->setItemWidget(item, checkBox);}void ComboBoxTest::on_comboBox_currentIndexChanged(int index){//获取当前索引位置的item
QListWidgetItem *item = m_listWidget->item(index);//当获取的item为空时返回if(nullptr== item){return;}//获取当前选项的文本
QString itemStr = item->text();//获取当前选项所在复选框的widget对象
QWidget *widget = m_listWidget->itemWidget(item);//将widget对象转换为checkBox对象
QCheckBox *checkBox =dynamic_cast<QCheckBox *>(widget);//当获取的checkBox为空时返回if(nullptr== checkBox){
ui->textBrowser->append("空");return;}//根据checkBox的勾选状态获取文本
QString checkBoxStr = checkBox->isChecked()?"已勾选":"未勾选";//组合text
QString text =QString("索引位置:%1 文本:%2 选中状态:%3").arg(index).arg(itemStr).arg(checkBoxStr);//将文本追加到文本栏中
ui->textBrowser->append(text);}
总结
在本文on_comboBox_currentIndexChanged获取到了复选框对象,可以在这里做出复选框应有的判断,或者在创建复选框时连接槽函数等操作;具体详解都在注释中,有意者细读哦😊。
友情提示——哪里看不懂可私哦,让我们一起互相进步吧
(创作不易,请留下一个免费的赞叭 谢谢 ^o^/)
注:文章为作者编程过程中所遇到的问题和总结,内容仅供参考,若有错误欢迎指出。
注:如有侵权,请联系作者删除
版权归原作者 lw向北. 所有, 如有侵权,请联系我们删除。