59常用控件_QComboBox的使用
目录
代码示例:使用下拉框模拟麦当劳点餐
代码示例:从文件中加载下拉框的选项
QComboBox表示下拉框
核心属性
属性 | 说明 |
---|---|
currentText | 当前选中的文本 |
currentIndex | 当前选中的条目下标。 从 0 开始计算。如果当前没有条目被选中,值为 -1 |
editable | 是否允许修改 设为 true 时,QComboBox 的行为就非常接近 QLineEdit,也可以设置 validator |
iconSize | 下拉框图标(小三角)的大小 |
maxCount | 最多允许有多少个条目 |
核⼼⽅法
方法 | 说明 |
---|---|
addItem(const QString&) | 添加一个条目 |
currentIndex() | 获取当前条目的下标 从 0 开始计算。如果当前没有条目被选中,值为 -1 |
currentText() | 获取当前条目的文本内容 |
核⼼信号
方法 | 说明 |
---|---|
activated(int) activated(const QString & text) | 当用户选择了一个选项时发出。 这个时候相当于用户点开下拉框,并且鼠标划过某个选项。 |
currentIndexChanged(int) currentIndexChanged(const QString & text) | 当前选项改变时发出。 此时用户已经明确的选择了一个选项。 |
editTextChanged(const QString & text) | 当编辑框中的文本改变时发出 (editable 为 true 时有效) |
代码示例:使用下拉框模拟麦当劳点餐
1)在界面上创建三个下拉框,和一个按钮
2) 编写 widget.cpp, 初始化三个下拉框的内容

3) 编写 widget.cpp, 给按钮添加 slot 函数

4) 执⾏程序, 可以看到, 在点击确定按钮时, 就能获取到当前下拉框中选中的内容

还可以通过Designer图形化界面创建



代码示例:从文件中加载下拉框的选项
很多时候下拉框的选项并非是固定的,而是通过读取文件/读取网络获取到的.
1)在界面上创建一个下拉框

2) 创建⽂件 config.txt , 编写选项. 每个选项占⼀⾏.
形如:

3) 修改widget.cpp,从文件中读取选项.
使用ifstream打开文件
使用getline读取每一行
使用QString::fromStdString把std::string转成QString
使用ifstream打开文件
使用getline读取每一行
使用QString::fromStdString把std::string转成QString

QString::fromStdString(line)-----转为QString字符串 QString::toStdString();----------转为String字符串
4) 执⾏程序, 可以看到⽂件内容已经被加载到下拉框中

Qt中也提供了QFile实现读写文件的功能,当然使用C++标准库的std:fstream也是完全可
以的.
之所以存在两套,是因为Qt诞生较早(1991年左右),此时C++还没有完成"标准化"的工作,
C++标准库这样的概念自然也没有诞生,
因此Qt就自己打造了一套库,实现了字符串,容器,文件操作,多线程,网络操作,定时器,正则表达式等内容.
(由于C++标准委员会的不作为,至今仍然有些Qt提供的功能,是标准库不具备的)
CPU是计算机的核心.一个计算机可以没有硬盘,可以没有网卡,可以没有显示器,可以
没有键盘,但是不能没有CPU.一个计算机如果没有CPU,就不能成为是计算机了!!文件输入输出方向一般针对CPU
ui->comboBox->addItem(line)此处要求的参数是 QString,不是 std:string.虽然都是字符串,但是他们是不同的类型~~此处就需要手动转换了~~
QString::fromStdString(line)把 std:string 转成 QString
QString s;
s.toStdString();把 Qstring 转成 std:string