一、属性和方法
1、文本
// 获取当前条目的索引和文本
int currentIndex() const
QString currentText() const
// 获取和设置指定索引条目的文本
QString itemText(int index) const
void setItemText(int index, const QString &text)
2、图标
// 获取和设置对应索引条目的图标
QIcon itemIcon(int index) const
void setItemIcon(int index, const QIcon &icon)
3、插入和删除
// 一次新增一个条目
void addItem(const QString &text, const QVariant &userData = QVariant())
void addItem(const QIcon &icon, const QString &text, const QVariant &userData = QVariant())
// 一次新增多个条目
void addItems(const QStringList &texts)
// 一次插入一个条目
void insertItem(int index, const QString &text, const QVariant &userData = QVariant())
void insertItem(int index, const QIcon &icon, const QString &text, const QVariant &userData = QVariant())
// 一次插入一个条目
void insertItems(int index, const QStringList &list)
// 获取和设置插入策略
QComboBox::InsertPolicy insertPolicy() const
void setInsertPolicy(QComboBox::InsertPolicy policy)
常用的插入策略有:
QComboBox::NoInsert 不插入
QComboBox::InsertAtTop 作为第一条条目插入(替换原第一条条目)
QComboBox::InsertAtCurrent 替换当前条目
QComboBox::InsertAtBottom 在最后一个条目之后插入
QComboBox::InsertAfterCurrent 在当前条目之后插入
QComboBox::InsertBeforeCurrent 在当前条目之前插入
QComboBox::InsertAlphabetically 按英文字母顺序插入
4、信号槽
// 当前选中的条目变化时,会发射这两个信号
void currentIndexChanged(int index)
void currentTextChanged(const QString &text)
二、组合框QComBox案例
1、UI界面布局
2、核心代码实现
#include "widget.h"
#include "ui_widget.h"
QStringList gdCityList = {"广州市", "深圳市", "珠海市", "东莞市"};
QStringList zjCityList = {"杭州市", "宁波市", "温州市", "绍兴市"};
QStringList sdCityList = {"济南市", "青岛市", "烟台市", "威海市"};
QStringList hbCityList = {"石家庄市", "保定市", "廊坊市", "衡水市"};
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
// 添加省份
ui->comboBox_sheng->addItem("广东省");
ui->comboBox_sheng->addItem("浙江省");
ui->comboBox_sheng->addItem("山东省");
ui->comboBox_sheng->addItem("河北省");
// 默认选中第一项-广东省
ui->comboBox_sheng->setCurrentIndex(0);
// 添加城市
ui->comboBox_cheng->addItems(gdCityList);
//信号槽
connect(ui->lineEdit_ming,&QLineEdit::textChanged,this,&Widget::onLineEditChanged);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_comboBox_sheng_currentIndexChanged(int index)
{
ui->comboBox_cheng->clear();
switch (index) {
case 0:
ui->comboBox_cheng->addItems(gdCityList);
break;
case 1:
ui->comboBox_cheng->addItems(zjCityList);
break;
case 2:
ui->comboBox_cheng->addItems(sdCityList);
break;
case 3:
ui->comboBox_cheng->addItems(hbCityList);
break;
default:
break;
}
// 获取姓名、省份、城市
QString name = ui->lineEdit_ming->text();
QString province = ui->comboBox_sheng->currentText();
QString city = ui->comboBox_cheng->currentText();
ui->lineEdit_result->setText(name + ", 来自" + province + city);
}
void Widget::on_comboBox_cheng_currentIndexChanged(int index)
{
QString name = ui->lineEdit_ming->text();
QString province = ui->comboBox_sheng->currentText();
QString city = ui->comboBox_cheng->currentText();
ui->lineEdit_result->setText(name + ", 来自" + province + city);
}
void Widget::onLineEditChanged()
{
QString name = ui->lineEdit_ming->text();
QString province = ui->comboBox_sheng->currentText();
QString city = ui->comboBox_cheng->currentText();
ui->lineEdit_result->setText(name + ", 来自" + province + city);
}