QCombobox在添加或者插入下拉项时,可以绑定一个用QVariant封装的用户数据,这方便我们在获取当前选中项时,可以获取到这个用户数据,从而对着这个用户数据进行判断之类的(而不是通过这个选项的文本来进行判断),让代码更易读。
void QComboBox::addItem(const QString &text,
const QVariant &userData = QVariant())
void QComboBox::insertItem(int index,
const QString &text,
const QVariant &userData = QVariant())
用法如下:
我们先声明一个枚举
enum City{
ZheJiang=0,
HuBei,
HuNan,
GuangDong
};
然后添加拉下拉项
QComboBox* cbo=new QComboBox(this);
//绑定的数据不仅可以是枚举,也可以是其他基础类型,
//也可以是用户自定义类型,只要是能够用QVariant存储的类型
cbo->addItem("浙江",(int)City::ZheJiang);
cbo->addItem("湖北",(int)City::HuBei);
cbo->addItem("湖南",(int)City::HuNan);
cbo->addItem("广东",(int)City::GuangDong);
然后绑定槽函数
connect(cbo,&QComboBox::currentIndexChanged,this,[=](){
//使用currentData()方法直接获取当前选择选项绑定的用户数据
//是一个QVariant
auto current_city=cbo->currentData();
//转换为真正的类型
City city=(City)current_city.toInt();
switch (city) {
case City::ZheJiang:
//do something
break;
case City::HuBei:
//do something
break;
case City::HuNan:
//do something
break;
case City::GuangDong:
//do something
break;
default:
break;
}
});