【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;

}



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。