【Qt】输入类控件QComboBox
大柏怎么被偷了 2024-09-18 15:35:07 阅读 92
目录
输入类控件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)执行代码
代码展示:
<code>#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);
代码展示:
<code>#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;
}
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。