当前位置: 首页 > article >正文

Qt常用控件——QComboBox

文章目录

    • 核心属性、方法、信号
    • 模拟点餐
    • 文件加载

核心属性、方法、信号

QComboBox表示下拉框

核心属性:

属性说明
currentText当前选中文本
currentIndex当前选中的条目下标
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时有效)

模拟点餐

image-20240915142941927

#include "widget.h"
#include "ui_widget.h"
#include<QtDebug>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    ui->comboBox_stapleFood->addItem("米饭");
    ui->comboBox_stapleFood->addItem("面条");
    ui->comboBox_stapleFood->addItem("馒头");
    ui->comboBox_stapleFood->addItem("大饼");

    ui->comboBox_dishes->addItem("鱼香肉丝");
    ui->comboBox_dishes->addItem("清炒时蔬");
    ui->comboBox_dishes->addItem("辣子鸡");
    ui->comboBox_dishes->addItem("回锅肉");

    ui->comboBox_soup->addItem("老母鸡汤");
    ui->comboBox_soup->addItem("西红柿鸡蛋汤");
    ui->comboBox_soup->addItem("紫菜汤");
    ui->comboBox_soup->addItem("排骨玉米汤");

}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_pushButton_clicked()
{
    qDebug() << ui->comboBox_stapleFood->currentText() << ", " << ui->comboBox_dishes->currentText() << ", " << ui->comboBox_soup->currentText();
}

也可以通过图形化界面的方式编辑下拉框内容:

image-20240915144230621

文件加载

下拉框里面的内容,一般都不是写死的,而是从文件/网络当中加载获得,下面以文件加载作为示例。

准备config文件:

image-20240915152320232

#include "widget.h"
#include "ui_widget.h"
#include<fstream>
#include<QDebug>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //读取文件内容,提取每一行的内容
    std::ifstream file("C:/Users/panyu/Desktop/config.txt");
    if(!file.is_open())
    {
        qDebug() << "open file error";
        return;
    }
    //按行读取
    std::string line;
    while(std::getline(file, line))
    {
        //接受参数为QString  需要转换一下
        //ui->comboBox->addItem(line);
        ui->comboBox->addItem(QString::fromStdString(line));
    }
}

Widget::~Widget()
{
    delete ui;
}

image-20240915152353578


http://www.kler.cn/a/307225.html

相关文章:

  • 虚幻引擎 CEO 谈元宇宙:发展、策略与布局
  • ima.copilot-腾讯智能工作台
  • java导出pdf
  • vue3 pdf base64转成文件流打开
  • LeetCode【0036】有效的数独
  • 【Qt-ROS开发】使用 Qt Creator 构建和编译含 ROS 库的 Qt 项目
  • Redisson分布式锁实现及原理详解
  • Visual Studio(vs)下载安装C/C++运行环境配置和基本使用注意事项
  • 深度学习之微积分预备知识点
  • HTTP 的请求方式有哪些和有什么区别
  • MATLAB 可视化基础:绘图命令与应用
  • C#笔记8 线程是什么?多线程怎么实现和操作?
  • Python精选200Tips:121-125
  • Spring Boot集成Akka Cluster实现在分布式节点中执行任务
  • Android中如何处理运行时权限?
  • 02 信念·组织力·战略 - 目标管理
  • [OpenCV] 数字图像处理 C++ 学习——15像素重映射(cv::remap) 附完整代码
  • 数据中台建设(六)—— 数据资产管理
  • uniapp 携带网址跳转webview页面报错解决
  • tp6.0.8反序列化漏洞的一些看法
  • Redis详细解析
  • (c++)猜数字(含根据当前时间生成伪随机数代码)
  • C++ Primer Plus(速记版)-面向对象与泛型编程
  • 浅谈 React Fiber
  • 关于less的基本使用
  • 【 html+css 绚丽Loading 】000050 乾坤合璧轮