QT之QComboBox使用汇总

简介

QComboBox是一个集按钮和下拉选项于一体的控件,也被称为下拉列表框。

addItem() 函数添加一个列表项

ui->comboBox->clear(); //清除列表
for (int i=0;i<20;i++)
{
   QIcon icon;
   icon.addFile(":/image/setting.ico");
   ui->comboBox->addItem(icon, QString::asprintf("Item %d",i)); //带图标
//        ui->comboBox->addItem(QString::asprintf("Item %d",i)); //不带图标
}

带图标:
在这里插入图片描述
不带图标
在这里插入图片描述

addltems() 函数添加多个列表项

ui->comboBox->clear();
QStringList strList;
strList<<"one"<<"two"<<"three"<<"four"<<"five"<<"six";
ui->comboBox->addItems(strList);

在这里插入图片描述

QMap配合函数addItem(),给QComboBox添加列表项

QMap<QString, int> City_Zone;
City_Zone.insert("北京",10);
City_Zone.insert("上海",21);
City_Zone.insert("天津",22);
City_Zone.insert("大连",411);
City_Zone.insert("锦州",416);
City_Zone.insert("徐州",516);
City_Zone.insert("福州",591);
City_Zone.insert("青岛",532);
ui->comboBox->clear();
foreach(const QString &str,City_Zone.keys())
    ui->comboBox->addItem(str,City_Zone.value(str));
connect(this, SIGNAL(currentIndexChanged), this, SLOT(on_comboBox_currentIndexChanged));
void MainWindow::on_comboBox_currentIndexChanged(const QString &arg1)
{
    QString zone=ui->comboBox->currentData().toString() ;//项关联的数据
    qDebug() << arg1 + ":区号=" + zone;
}

运行效果如下
在这里插入图片描述
在这里插入图片描述

QComboBox常用API

QComboBox 存储的项是一个列表,但是 QComboBox 不提供整个列表用于访问,可以通过索引访问某个项。访问项的一些函数主要有以下几种:

int currentlndex():返回当前项的序号,第一个项的序号为0。
QString currentText():返回当前项的文字。
QVariant currentData(int role = Qt::UserRole):返回当前项的关联数据,数据的缺省角色为 role = Qt::UserRole,角色的意义在后续章节会详细介绍。
QString itemText(int index):返回指定索引号的项的文字。
QVariant itemData(int index, int role = Qt%:UserRole):返回指定索引号的项的关联数据。
int count():返回项的个数。

在这里插入图片描述

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

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

这两个信号只是传递的参数不同,一个传递的是当前项的索引号,一个传递的当前项的文字

其它信号汇总
在这里插入图片描述

QComboBox列表项的访问

例1

ui->comboBox->clear();
QStringList strList;
strList<<"one"<<"two"<<"three"<<"four"<<"five"<<"six";
ui->comboBox->addItems(strList);
 connect(ui->comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(on_comboBox2_currentIndexChanged(int)));
void MainWindow::on_comboBox2_currentIndexChanged(int index)
{
    qDebug() << index; //输出QComboBox当前选择索引
}

效果如下
在这里插入图片描述
在这里插入图片描述

例2

QMap<QString, int> City_Zone;
City_Zone.insert("北京",10);
City_Zone.insert("上海",21);
City_Zone.insert("天津",22);
City_Zone.insert("大连",411);
City_Zone.insert("锦州",416);
City_Zone.insert("徐州",516);
City_Zone.insert("福州",591);
City_Zone.insert("青岛",532);
ui->comboBox->clear();
foreach(const QString &str,City_Zone.keys())
    ui->comboBox->addItem(str,City_Zone.value(str));
connect(this, SIGNAL(currentIndexChanged), this, SLOT(on_comboBox_currentIndexChanged));
void MainWindow::on_comboBox_currentIndexChanged(const QString &arg1)
{
    QString zone=ui->comboBox->currentData().toString() ;//项关联的数据
    qDebug() << arg1 + ":区号=" + zone;
}

运行效果如下
在这里插入图片描述
在这里插入图片描述

获取当前QComboBox的下标和列表内容

void MainWindow::on_pushButton_5_clicked()
{
    qDebug() << ui->comboBox->currentIndex() << ":" << ui->comboBox->currentText();
}

效果如下

0 : "one"
1
1 : "two"
2
2 : "three"
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

路过的小熊~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值