Qt之QComboBox(添加纯文本item、添加带图标的item、信号、item携带自定义数据、可编辑属性) |
您所在的位置:网站首页 › combobox添加新列表替代旧列表 › Qt之QComboBox(添加纯文本item、添加带图标的item、信号、item携带自定义数据、可编辑属性) |
QComboBox作为下拉列表框,也是常用的控件之一,最常见的就是win10文件浏览器上的地址输入栏、QQ登录框等。本篇文章将从以下几个方面介绍QComboBox: [1]添加纯文本item [2]添加带图标的item [3]信号 [4]item携带自定义数据 [5]编辑 [1]添加纯文本itemQComboBox添加纯文本列表项可以单个插入(以QString方式)、多个插入(以QStringList方式)、单个指定位置插入、多个指定位置插入,代码如下: //添加单个item ui->comboBox->addItem("测试项目1"); //批量添加item ui->comboBox->addItems({"测试项目2","测试项目3","测试项目4"}); //指定位置插入单个item(在最后插入) ui->comboBox->insertItem(ui->comboBox->count(),"测试项目5"); //指定位置插入多个item(最前面插入) ui->comboBox->insertItems(0,{"测试项目-1","测试项目0"});程序运行结果: [2]添加带图标的item 通过调用以下接口可以实现添加带图标的item: void addItem(const QIcon &icon, const QString &text, const QVariant &userData = QVariant()) void insertItem(int index, const QIcon &icon, const QString &text, const QVariant &userData = QVariant())也可以调用以下接口修改或设置已有item的图标: void setItemIcon(int index, const QIcon &icon)代码如下: //设置图标大小为32*32(默认为16*16) ui->comboBox->setIconSize(QSize(32,32)); ui->comboBox->addItem(QIcon(":/new/prefix1/Res/folder.png"),"测试项目6"); ui->comboBox->insertItem(ui->comboBox->count(),QIcon(":/new/prefix1/Res/folder.png"),"测试项目7"); ui->comboBox->setItemIcon(1,QIcon(":/new/prefix1/Res/folder.png"));程序运行结果: [3]信号 QComboBox有下面这几个信号事件: void activated(int index) void activated(const QString &text) void currentIndexChanged(int index) void currentIndexChanged(const QString &text) void currentTextChanged(const QString &text) void editTextChanged(const QString &text) void highlighted(int index) void highlighted(const QString &text)当有列表项被点击时,会发出activated信号,传递index或text参数给信号所对应的槽函数。 当选择项发生变化时,会发出currentIndexChanged信号,传递index或text参数给信号所对应的槽函数。 当列表文本改变时(需要打开可编辑属性),则会触发editTextChanged信号,传递改变后的文本给信号所对应的槽函数。 当某个列表项高亮时(如将鼠标放在列表项上面),会发出highlighted信号,传递index或text参数给信号所对应的槽函数。 下面以void activated(int index)信号作为示例: 信号与槽绑定 connect(ui->comboBox,SIGNAL(activated(int)),this,SLOT(Activated(int)));槽函数的实现: void Widget::Activated(int index) { qDebug() itemText(index); }[4]item携带自定义数据 QComboBox可以在添加或插入item时指定自定义数据,也可以根据下标对已有的item进行自定义数据插入,代码如下: 自定义数据: struct Student { QString name; int age; }; //声明自定义类型,使得Qt能找到此类型的定义 Q_DECLARE_METATYPE(Student);addItem时直接指定自定义数据: QVariant useVar; Student s1 = {"小明",20}; useVar.setValue(s1); ui->comboBox->addItem("小明",useVar);在Activated槽函数中添加以下代码: QVariant useVar = ui->comboBox->itemData(index); //判断先前是否有指定数据 if(useVar == QVariant::Invalid) { qDebug() |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |