QComboBox简介
QComboBox 是下拉列表框组件类,它提供一个下拉列表供用户选择,也可以直接当作一个 QLineEdit 用作输入。
QComboBox 除了显示可见下拉列表外,每个项(item,或称列表项)还可以关联一个 QVariant 类型的变量,用于存储一些不可见数据。
QComboBox *combo = new QComboBox(); // 下拉选择框
combo->addItem(tr("第一个选项")); // 添加选项
combo->addItem(tr("第二个选项"));
// slot_combo()是自定义的槽函数,可根据需求自行修改
connect(combo, SIGNAL(currentIndexChanged(int)), this, SLOT(slot_combo()));
combo->currentIndex()可以查看当前索引值
QComboBox列表项的访问
QComboBox 存储的项是一个列表,但是 QComboBox 不提供整个列表用于访问,可以通过索引访问某个项。访问项的一些函数主要有以下几种:
int currentlndex():
返回当前项的序号,第一个项的序号为0。
QString currentText():
返回当前项的文字。
QVariant currentData(int role = Qt::UserRole):
返回当前项的关联数据,
QString itemText(int index):
返回指定索引号的项的文字。
QVariant itemData(int index, int role = Qt%:UserRole):
返回指定索引号的项的关联数据。
int count():
返回项的个数。
QComboBox的currentlndexChanged信号
在一个 QComboBox 组件上选择项发生变化时,会发射如下两个信号:
void currentlndexChanged(int index)
void currentlndexChanged(const QString &text)
这两个信号只是传递的参数不同,
一个传递的是当前项的索引号,
一个传递的当前项的文字。
/// h文件
private slots:
void on_comboBox_cities_currentIndexChanged(
const QString &arg1);
/// cpp文件
void Widget::on_comboBox_cities_currentIndexChanged(
const QString &arg1)
{
ui->lineEdit_city->setText( arg1 );
}
QComboBox添加图标
用代码添加项
添加一个项时可以指定一个图标,图标来源于资源文件。
void Widget::on_pushButton_addCity_clicked()
{
QIcon icon;
icon.addFile(":/images/icon_city.png");
ui->comboBox_cities->addItem("河南");
ui->comboBox_cities->addItem(icon,"福建");
}
添加项
addItem():
用于添加一个列表项,
addltems() 函数:
如果只是添加字符串列表项,
而且数据来源于一个 QStringList 变量,
可以使用 addltems() 函数,示例代码如下:
ui->comboBox->clear();
QStringList strList;
strList<<"北京"<<"上海"<<"天津"<<"河北省"<<"山东省"<<"山西省";
ui->comboBox->addItems(strList);