1.QComboBox简介

QComboBox 是下拉列表框组件类,它提供一个下拉列表供用户选择,也可以直接当作一个 QLineEdit 用作输入。QComboBox 除了显示可见下拉列表外,每个项(item,或称列表项)还可以关联一个 QVariant 类型的变量,用于存储一些不可见数据。

2.常用方法

 添加带图标的项

    QIcon   icon;
    icon.addFile(":/images/icon.jpg");
    ui->comboBox->addItem(icon,"四川");
    ui->comboBox->addItem(icon,"湖南");
    ui->comboBox->addItem(icon,"湖北");

添加不带图标的项

QStringList strList;
strList<<"四川"<<"湖南"<<"湖北";
ui->comboBox->addItems(strList);

添加用户自定义数据

    //添加带自定义数据
    QMap<QString, QString> City_Zone;
    City_Zone.insert("四川","sichuan");
    City_Zone.insert("湖南","hunan");
    City_Zone.insert("湖北","hubei");
    foreach(const QString &str,City_Zone.keys())
           ui->comboBox->addItem(str,City_Zone.value(str));
//返回当前项的序号,第一个项的序号为0。
int currentlndex()

//返回当前项的文字。
QString currentText()

//返回当前项的关联数据
QVariant currentData(int role = Qt::UserRole)

//返回指定索引号的项的文字。
QString itemText(int index)

//返回指定索引号的项的关联数据。
QVariant itemData(int index, int role = Qt::UserRole)

//返回项的个数。
int count()

设置QComboBox下拉框的样式,可以是列表、树、表格等格式

void setView(QAbstractItemView *itemView)

在一个 QComboBox 组件上选择项发生变化时,会发射如下两个信号:

void currentlndexChanged(int index)
void currentlndexChanged(const QString &text)

3.示例1-添加数据

选择combobox中的一项,在textEdit上打印自定义的数据

#include "widget.h"
#include "ui_widget.h"
#include <QMap>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    //初始化
//    QStringList strList;
//    strList<<"四川"<<"湖南"<<"湖北";
//    ui->comboBox->addItems(strList);

    //添加带自定义数据
    QMap<QString, QString> City_Zone;
    City_Zone.insert("四川","sichuan");
    City_Zone.insert("湖南","hunan");
    City_Zone.insert("湖北","hubei");
    foreach(const QString &str,City_Zone.keys())
           ui->comboBox->addItem(str,City_Zone.value(str));
}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_comboBox_currentIndexChanged(const QString &arg)
{
    QString py=ui->comboBox->currentData().toString() ;//项关联的数据
    QString str = QString("当前选择项为 ")+arg + " = "+py;
    ui->textEdit->setText(str);
}

4.示例2-显示为树形结构

本例演示树形结构,可以显示别的结构。

 源码:

    QStandardItemModel *model = new QStandardItemModel(this);

    //设置表头
    model->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");

    QStandardItem *item1 = new QStandardItem("四年级");

    model->setItem(0,0,item1);
    QStandardItem *item00 = new QStandardItem("张三");
    QStandardItem *item10 = new QStandardItem("张四");
    QStandardItem *item20 = new QStandardItem("张五");

    QStandardItem *item01 = new QStandardItem("男");
    QStandardItem *item11 = new QStandardItem("女");
    QStandardItem *item21 = new QStandardItem("男");

    QStandardItem *item02 = new QStandardItem("15");
    QStandardItem *item12 = new QStandardItem("14");
    QStandardItem *item22 = new QStandardItem("16");

    model->item(0,0)->setChild(0,0,item00);
    model->item(0,0)->setChild(1,0,item10);
    model->item(0,0)->setChild(2,0,item20);

    model->item(0,0)->setChild(0,1,item01);
    model->item(0,0)->setChild(1,1,item11);
    model->item(0,0)->setChild(2,1,item21);

    model->item(0,0)->setChild(0,2,item02);
    model->item(0,0)->setChild(1,2,item12);
    model->item(0,0)->setChild(2,2,item22);

    QTreeView *treeView = new QTreeView(ui->comboBox);

    ui->comboBox->setView(treeView);
    ui->comboBox->setModel(model);

5.设置style常见问题

设置style常见问题icon-default.png?t=M5H6https://blog.csdn.net/wzz953200463/article/details/103835587

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐