Qt QComboBox详解

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

  • 22
    点赞
  • 121
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灬Sunnnnn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值