【Qt】输入类控件QComboBox

server/2024/10/25 14:29:55/

 

目录

 输入类控件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;
}


http://www.ppmy.cn/server/104515.html

相关文章

数采网关面临的安全挑战

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 数采网关作为物联网的基础设施…

监控易全国招募:携手共创,共赢未来

在当今数字化转型的浪潮中&#xff0c;企业的IT运维管理面临着前所未有的挑战与机遇。随着业务系统的不断扩展和复杂化&#xff0c;运维团队需要监控的设备、应用和数据量呈爆炸式增长&#xff0c;传统的运维监控手段已经难以满足高效、准确、实时的监控需求。 这一背景为运维监…

美国洛杉矶服务器地址在哪里?

美国洛杉矶服务器地址不是单一固定不变的&#xff0c;而是泛指那些部署在洛杉矶地区的众多服务器的IP地址和端口号。这些服务器分布于各数据中心之中&#xff0c;承担着数据存储、网络通信和云计算等多项关键任务。下面将展开介绍洛杉矶服务器地址的相关内容&#xff1a; 1.洛…

curl 无法访问 download.docker.com 的问题的解决方法

一. 问题 在按照 Docker Standalone | SigNoz 中的说明安装SigNoz之时出现下面的输出&#xff1a; $ ./install.sh &#x1f44b; Thank you for trying out SigNoz! &#x1f7e1; Running installer with non-sudo permissions.In case of any failure or prompt, please…

Vector vs 数组:Java中Vector相比数组的优点

每日自动更新各类学习教程及工具下载合集 ​​https://pan.quark.cn/s/874c74e8040e​​ 在Java编程中&#xff0c;数组&#xff08;Array&#xff09;和Vector都是用于存储数据的容器&#xff0c;但它们在设计和功能上有所不同。选择使用哪种数据结构取决于具体的需求。在这…

Java开发笔记-小程序微信支付接入

步骤&#xff1a; 1.注册微信商户&#xff0c;开通小程序支付业务&#xff0c;获得必要接入参数。(Certificate、PrivateKey、merchantId、SerialNumbe、apiV3Key) 2.微信商户号关联小程序(需目标小程序审核) 3.java使用接入参数发起下单&#xff0c;获取下单参数。 4.小程…

控制反转(IOC)——Spring第一个核心思想

控制反转概述 控制反转&#xff08;IoC&#xff09;是一种将对象的创建、组装和管理交给容器或框架来实现的编程思想。它可以减低对象之间的耦合度&#xff0c;提高代码的灵活性和模块化。控制反转的一种常见形式是依赖注入&#xff08;DI&#xff09;&#xff0c;即对象的依赖…

【Kotlin设计模式】Kotlin实现工厂模式

前言 工厂模式&#xff08;Factory Pattern&#xff09;是一种创建型设计模式&#xff0c;提供一个创建对象的接口&#xff0c;不暴露对象的创建过程。它将实例化对象的任务交给子类或具体实现&#xff0c;从而使得客户端代码与具体类解耦。 工厂模式主要分为以下三类&#xf…