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常见问题https://blog.csdn.net/wzz953200463/article/details/103835587
更多推荐
已为社区贡献7条内容
所有评论(0)