目录
输入类控件QComboBox
例子:使用下拉框模拟点餐
例子:从文件中加载下拉框的选项
输入类控件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)初始化三个下拉框内容
(3)给按钮添加slot函数
(4)执行代码
代码展示:
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
ui->comboBox->addItem("鸡腿堡");
ui->comboBox->addItem("牛肉堡");
ui->comboBox->addItem("虾堡");
ui->comboBox_2->addItem("薯条");
ui->comboBox_2->addItem("鸡块");
ui->comboBox_2->addItem("鸡翅");
ui->comboBox_3->addItem("可乐");
ui->comboBox_3->addItem("雪碧");
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
qDebug() << ui->comboBox->currentText() << "一份,"
<< ui->comboBox_2->currentText() << "一份,"
<< ui->comboBox_3->currentText() << "一杯。";
}
例子:从文件中加载下拉框的选项
下拉框里面的内容,很多时候不是从代码中提取处理的,而是通过文件或者网络加载数据得到的。例如选课操作。
(1)在文件中创建一个.txt文件
(2)在界面上创建一个下拉框
(3)在.cpp文件中读取.txt文件
CPU时计算机的核心,一个计算机可以没有硬盘,可以没有网卡,可以没有显示器,可以没有键盘,但是不能没有CPU,一个计算机如果没有CPU,就不能称为计算机了。
此处要求的参数时QString,不是std::string,虽然二者都是字符串,但是是不同的类型,此处需要手动的转换。
(1)std::string转换为QString
std::string s;
QString::fromStdString(s);
(2)QString转换为std::string
std::string s;
QString s1;
s1.toStdString(s);
代码展示:
#include "widget.h"
#include "ui_widget.h"
#include<QDebug>
#include<fstream>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//读取文件内容
std::ifstream file("d:/config.txt");
if(!file.is_open())
{
qDebug() << "文件打开失败";
return;
}
//按行读取文本
std::string line;
while(std::getline(file, line))
{
//将读取到的每一行都放在下拉框里面
ui->comboBox->addItem(QString::fromStdString(line));
}
//关闭文件
file.close();
}
Widget::~Widget()
{
delete ui;
}