下拉列表组件
- 一.Combo Box
- 1.可以直接双击编辑下拉内容
- 2.代码初始化下拉内容
- 3.一次性添加多个下拉内容
- 4.下拉框手动编辑
- 5.下拉内容添加附加值
- 6.下拉添加图标
- 7.获取下拉值
- 二.总结
一.Combo Box
还是老样子,咱们边做边练
目标图:
1.可以直接双击编辑下拉内容
话不多说,先拖。
标签是可以显示框线的
运行结果:
接下来开始布局:
上面的4个组件先格栅,然后窗口垂直布局,然后可以加Spacer来调距离,也可以通过设置最小宽度来调。
当我们直接双击comboBox时,会弹出:
在这里可以直接进行下拉选择的添加
但是这样写死,不太好,大多数我们是用代码来写!
2.代码初始化下拉内容
定义一个初始化函数initUI来初始化下拉组件
3.一次性添加多个下拉内容
用addItems(),注意参数为字符串列表。
void Dialog::initUI()
{ui->comboBoxXueli->clear();//先清空刚刚我们双击添加的学历QStringList list;list<<"小学"<<"初中"<<"高中"<<"大学"<<"研究生"<<"博士后";ui->comboBoxXueli->addItems(list);//参数为字符串列表}
4.下拉框手动编辑
**setEditable(true)**就可以直接输入
ui->comboBoxXueli->setEditable(true);
5.下拉内容添加附加值
addItem的第二个参数为附加值,当我们获取时,可以获取的到。
因为这样两个值,我们刚好可以用到容器QMap
用迭代器循环来进行加入。
QMap<QString,QString> citys;citys.insert("北京","010");citys.insert("上海","020");citys.insert("江苏","030");citys.insert("四川","080");for(auto it=citys.begin();it!=citys.end();it++){ui->comboBoxCity->addItem(it.key(),it.value());}
运行结果:
6.下拉添加图标
OK接下来我们来添加图标。
addItem的第一个参数可以加图标。
因为有这些重载函数:
OK,添加图标肯定要有资源,所有我们先来添加资源吧。
记得添加完后保存一下:
然后开始添加我们的资源到下拉组件中
addFile是将路径中的图片添加到icon的变量名中。
:表示从当前资源目录中去寻找。
QIcon icon1;icon1.addFile(":/lanq.png");ui->comboBoxLove->addItem(icon1,"篮球");QIcon icon2;icon2.addFile(":/music.png");ui->comboBoxLove->addItem(icon2,"音乐");
运行结果:
7.获取下拉值
接下来我们对下拉组件来进行转到槽,获取下拉的内容。
用这个信号
用currentText可以来获取当前下拉选中的值。
用currentDate可以来获取当前的附加值,如果设置了的话
void Dialog::onChange()
{QString xueli=ui->comboBoxXueli->currentText();QString city=ui->comboBoxCity->currentText();QString love=ui->comboBoxLove->currentText();QString number=ui->comboBoxCity->currentData().toString();//获取附加值QString ret="学历:"+xueli+" 爱好:"+love+" 城市:"+city+" 区号:"+number;ui->labelText->setText(ret);}void Dialog::on_comboBoxXueli_currentIndexChanged(int index)
{onChange();
}void Dialog::on_comboBoxCity_currentIndexChanged(int index)
{onChange();
}void Dialog::on_comboBoxLove_currentIndexChanged(int index)
{onChange();
}
运行结果:
二.总结
对于Combo Box组件,我们主要注意一下那几个添加方法,后获取的方法。
成功的确需要一步一个脚印的积累,勤奋和汗水是成功的基础和前提!