12.QT-Combo Box|Spin Box|模拟点餐|从文件中加载选项|调整点餐份数(C++)

Java实现模拟KFC点餐系统(设计模式)   同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++/python/Java,结合设计模式(2种以上)至少实现系统的以下功能: 1.正常餐品结算和找零。 2.基本套餐结算和找零。 3.使用优惠劵购买餐品结算和找零。 4.可在一定时间段参与店内活动(自行设计或参考官网信息)。 5.模拟打印小票的功能(写到文件中)。 设计... 阅读详情

Combo Box

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)在界⾯上创建三个下拉框,和⼀个按钮.
![[Pasted image 20250421084752.png]]

2)编写widget.cpp,初始化三个下拉框的内容

#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();
}

![[Pasted image 20250421085244.png]]

也可以在图形界面,右键添加项目
![[Pasted image 20250421085414.png]]

代码⽰例:从⽂件中加载下拉框的选项

很多时候下拉框的选项并⾮是固定的,⽽是通过读取⽂件/读取⽹络获取到的
1)在界⾯上创建⼀个下拉框
![[Pasted image 20250421091056.png]]

2)创建⽂件config.txt ,编写选项.每个选项占⼀⾏.
![[Pasted image 20250421091046.png]]

3)修改widget.cpp,从⽂件中读取选项.

  • 使⽤ ifstream 打开⽂件
  • 使⽤ getline 读取每⼀⾏
  • 使⽤ QString::fromStdString 把 std::string 转成 QString
#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("F:/Qt/QT Work/qcombobox1/config.txt");
    if (!file.is_open()) {
        qDebug() << "文件打开失败";
        return;
    }
    //按行读取文本内容getline
    std::string line;
    while (std::getline(file, line)) {
        //取到的内容都设置到下拉框中
        ui->comboBox->addItem(QString::fromStdString(line));
    }
    file.close();
}
  
Widget::~Widget()
{
    delete ui;
}

![[Pasted image 20250421092805.png]]

Qt中也提供了QFile实现读写⽂件的功能.当然使⽤C++标准库的std::fstream也是完全可以的.
之所以存在两套,是因为Qt诞⽣较早(1991年左右),此时C++还没有完成"标准化"的⼯作,C++标准库这样的概念⾃然也没有诞⽣.
因此Qt就⾃⼰打造了⼀套库,实现了字符串,容器,⽂件操作,多线程,⽹络操作,定时器,正则表达式等内容.(由于C++标准委员会的不作为,⾄今仍然有些Qt提供的功能,是标准库不具备的)

Spin Box

使⽤ QSpinBox 或者 QDoubleSpinBox 表⽰"微调框",它是带有按钮的输⼊框.可以⽤来输⼊整数/浮点数.通过点击按钮来修改数值⼤⼩.
由于 SpinBox 和 QDoubleSpinBox ⽤法基本相同,就只介绍 SpinBox 的使⽤了.

关键属性

属性说明
value存储的数值.
singleStep每次调整的"步⻓".按下⼀次按钮数据变化多少.
displayInteger数字的进制.例如displayInteger设为10,则是按照10进制表⽰.设为2则为2进制表⽰.
minimum最⼩值
maximum最⼤值
suffix后缀
prefix前缀
wrapping是否允许换⾏
frame是否带边框
alignment⽂字对⻬⽅式.
readOnly是否允许修改
buttonSymbol按钮上的图标.
• UpDownArrows 上下箭头形式
• PlusMinus 加减号形式
• NoButtons 没有按钮
accelerated(加速的)按下按钮时是否为快速调整模式
correctionMode输⼊有误时如何修正.
• QAbstractSpinBox::CorrectToPreviousValue :如果⽤⼾输⼊了⼀个
⽆效的值(例如,在只能显⽰正整数的SpinBox中输⼊了负数),那么
SpinBox会恢复为上⼀个有效值。例如,如果SpinBox的初始值是1,⽤⼾输⼊了-1(⽆效),然后SpinBox会恢复为1。
• QAbstractSpinBox::CorrectToNearestValue :如果⽤⼾输⼊了⼀个
⽆效的值,SpinBox会恢复为最接近的有效值。例如,如果SpinBox的初始值是1,⽤⼾输⼊了-1(⽆效),那么SpinBox会恢复为0。
keyboardTrack是否开启键盘跟踪.
设为true,每次在输⼊框输⼊⼀个数字,都会触发⼀次valueChanged()和
textChanged()信号.
设为false,只有在最终按下enter或者输⼊框失去焦点,才会触发
valueChanged()和textChanged()信号.
核⼼信号
信号说明
textChanged(QString)微调框的⽂本发⽣改变时会触发.
参数QString带有前缀和后缀.
valueChanged(int)微调框的⽂本发⽣改变时会触发.
参数int,表⽰当前的数值.
代码⽰例:调整⻨当劳购物⻋中的份数

1)在界⾯上创建下列内容

  • 三个下拉框: objectName 为 comboBox 到 comboBox_3
  • 三个微调框: objectName 为 spinBox 到 spinBox_3
  • ⼀个按钮: objectName 为 pushButton
    ![[Pasted image 20250421100004.png]]

2)编写代码,修改widget.cpp,给下拉框设置初始值.

#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->spinBox->value()
             << ui->comboBox_2->currentText() << ": " << ui->spinBox_2->value()
             << ui->comboBox_3->currentText() << ": " << ui->spinBox_3->value();
}

4)执⾏程序,可以看到当⽤⼾选择不同的内容时,点击按钮就能获取到对应的结果
![[Pasted image 20250421100624.png]]

    //针对QSpinBox的范围进行设置
    ui->spinBox->setRange(1, 5);
    ui->spinBox_2->setRange(1, 5);
    ui->spinBox_3->setRange(1, 5);
  
    ui->spinBox->setValue(1);
    ui->spinBox_2->setValue(1);
    ui->spinBox_3->setValue(1);

![[Pasted image 20250421101633.png]]

QT的学习第四部分 本文介绍Qt与Linux V4L2框架下摄像头及音视频处理实现。基于Qt的QCamera与QCameraViewfinder类可便捷实现预览与拍照,需在pro文件添加multimedia和multimediawidgets插件。通过V4L2框架可深入控制摄像头参数、缓冲队列及图像采集流程,实现高精度视频捕获。结合FFmpeg与mplayer工具,可在Linux下完成音视频播放、格式转换与流媒体处理。整体涵盖从硬件接口到应用层开发的完整技术链路,适用于嵌入式多媒体系统开发。 阅读详情

相关推荐

lumerical中DEVICE和MODE模块的交互使用(真的很干货!!可以自信的说网上绝对找不到比我更详细的步骤了)

几个脚本文件很重要! Lumerical仿真流程: 一、DEVICE: (1).建模并且运行完之后,在脚本提示符下键入以下脚本行以运行plotDopingProfile.lsf如图1(文件名如果索引不到的话就可以把文件直接用notepad++打开,然后把代码直接输入到device中script脚本中 如图2)脚本文件并生成下图 如图3: (图2) (图1) (图3) (2).仿真...

1万+

模拟实现点餐系统

项目----点餐系统

secretalive的博客 788

五.卡尔曼滤波器(EKF)开发实践之五: 编写自己的EKF替换robot_pose_ekf中EKF滤波器

本系列文章主要介绍如何在工程实践中使用卡尔曼滤波器,分五个小节介绍: 一.卡尔曼滤波器开发实践之一: 五大公式 二.卡尔曼滤波器开发实践之二: 一个简单的位置估计卡尔曼滤波器 三.卡尔曼滤波器(EKF)开发实践之三: 基于三个传感器的海拔高度数据融合 四.卡尔曼滤波器(EKF)开发实践之四: ROS系统位姿估计包robot_pose_ekf详解 五.卡尔曼滤波器(EKF)开发实践之五: 编写自己的EKF替换robot_pose_ekf中EKF滤波器 也就是本文 ...

okgwf的博客 4138

课程设计《模拟点餐系统》

#include #include #include using namespace std; class Cmenu //创建Cmenu类 { int num; //菜的编号 string name

u013911819的专栏 2366

0032期基于深度学习的大米识别-含数据集

083基于深度学习的手势识别小程序版本_含10多种模型包括alexnet、DenseNet、DLA、GoogleNet、Mobilenet、ResNet、ResNeXt、ShuffleNet、VGG、EfficientNet和Swin transformer等10多种模型。117nlp自然语言处理-文本情感分类-joy-sadness-anger-fear-love-surprise。运行02深度学习模型训练.py就会将txt文本中记录的训练集和验证集进行读取训练,训练好后会保存模型在本地。

grehtsfrs的博客 1506

【RF】Receiver Function接收函数:从理论到实践的深度解析

本文深入解析地震学中的接收函数(Receiver Function, RF)技术,从理论原理到实践操作。文章将RF比作地球的“听诊器”,详细阐述了其通过反褶积剥离震源影响、揭示地下结构(如莫霍面)的核心机制,并提供了使用Python和rf库进行数据处理、计算、动校正与叠加的完整实战流程,同时探讨了其应用、局限性与常见问题的解决方案。

Jerry的专栏 121

Qt常用控件之按钮类控件

本篇博客详细讲述了,Qt中提供的常用的按钮类控件,QPushButton、QRadioButton、QCheckBox

一名还在努力学习技术的程序员的博客 1309

4D毫米波雷达

详解4D成像毫米波雷达

sangba2019的博客 2393

点餐小程序

近年来,伴随者互联网产业的快速发展,各种信息化软件应运而生。当下,人们出门在外一部手机就可以解决线下所有的交易支付,人们对于信息化软件的使用也已不陌生。经济的发展,人均收入的提高,人们去餐饮店用餐已经成为了一种常态。由于各大餐饮店之间竞争激烈,如何优化顾客的用餐环节,如何提高用户的用餐体验,成为现在各大餐饮店急需解决的主要问题。

全网粉丝10W+、全栈领域优质创作者、掘金、阿里云等社区博客专家、专注于全栈领域和毕业项目实战 3493

apollo-减速带通行

主车在通过减速带时速度不超过3m/s

是菜鸟o的博客 389

第069篇:浸入边界法进阶

浸入边界法(Immersed Boundary Method, IBM)是处理流固耦合问题的强大数值方法。本文深入介绍直接力法、反馈力法、Ghost Cell方法和多域IBM等高级技术。通过Python实现完整的IBM求解器,展示处理移动边界、弹性边界和多体相互作用的方法。浸入边界法,直接力法,反馈力法,Ghost Cell,流固耦合,移动边界,弹性边界Navier-Stokes方程添加体积力项:∂u∂t+(u⋅∇)u=−1ρ∇p+ν∇2u+f\frac{\partial \mathbf{u}}{\part

2401_87715305的博客 412

Javascript | 模拟mvc实现点餐程序

MVC模式是一个比较成熟的开发模式。M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。其中,View的定义比较清晰,就是用户界面。 今天就来模拟使用MVC模式开发一个点餐程序,当然,只是就此案例来说明MVC在前端的实现参考,并没有完整的实现。程序很简单,与传统的MVC三层架构不谋而合。 首先,先介绍一下场景:顾客进到餐馆,拿着菜单点餐,服务员记录并发到后端厨房,厨师接到订单,按照订单的菜品去制作,制作完毕通...

CsMusicMan的专栏 1687

YOLOv11【第三章:高阶应用与落地篇·第1节】一文搞懂,YOLOv11-Seg 实例分割:Mask 原型生成与系数预测原理解析!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 1248

Qt 常用控件 - 7

本文介绍了Qt中三种常用控件的核心属性和使用方法:1. QTextEdit:多行输入框,支持富文本和Markdown格式,提供滚动条功能。核心属性包括markdown支持、HTML支持、占位文本等,并详细说明了其信号机制和代码示例。2. QComboBox:下拉框控件,支持可编辑选项和图标显示。重点介绍了currentText、currentIndex等核心属性,以及activated、currentIndexChanged等信号的使用场景,通过麦当劳点餐示例演示实际应用。3. QSpinBox:微调数值输

Small_entreprene的博客 821

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

模拟KFC点餐系统

一, 题目要求 模拟KFC点餐系统。 1.正常餐品结算和找零。 2.基本套餐结算和找零。 3.使用优惠劵购买餐品结算和找零。 4.可在一定时间段参与店内活动(自行设计或参考官网信息)。 5.模拟打印小票的功能(写到文件中)。 基本要求: 1.程序设计风格良好,控制台界面友好,最多两人一组完成任务。 2.实现功能测试代码,确保程序的健壮性。 3.画出使用的设计模式图。 提高要求: 1.实现可视化界面...

欢迎来到 晨 的博客 1271

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

KFC点餐模拟

同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能: 1.正常餐品结算和找零。 2.基本套餐结算和找零。 3.使用优惠劵购买餐品结算和找零。 4.可在一定时间段参与店内活动(自行设计或参考官网信息)。 5.模拟打印小票的功能(写到文件中)。 基本要求: 1.程序设计风格...

ASingleWolf的博客 641

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

用C++模拟KFC点餐系统

一、题目名称:模拟肯德基收银系统 二、题目内容: 同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能: 1.正常餐品结算和找零。 2.基本套餐结算和找零。 3.使用优惠劵购买餐品结算和找零。 4.可在一定时间段参与店内活动(自行设计或参考官网信息)。 5.模拟打印小票的功能(写到文件中)。 基本要求: 1.程序设计风格良好,控制台界面友好,最多两人一组完成任务。 2.实现功能测试

weixin_44622101的博客 3430

shell运算实战案例——点餐系统

shell运算实战案例-KFC点餐系统 写一个餐厅点餐程序 案例需求 写一个程序,模拟KFC点餐系统,要求有以下功能: 1、点餐功能 2、结算功能 3、打印流水单 案例步骤 1、交互点餐 2、结账收银 3、打印流水单给客户 案例代码 #!/bin/bash # #Author: # #Release: #Description: #1)录入单价 HBB=19.8 JC=12.3 KL=9.9 #2)定义输出 cat <<EOF welcome to restaurant

肥猫警长的博客 3505

Qt QBuffer 详解:内存缓冲区读写与实战用法

QBuffer 是 Qt 中用于内存缓冲区读写的 QIODevice 实现,可将 QByteArray 作为“文件”进行随机访问。它支持 open()、read()、write()、seek() 等操作,常用于数据序列化(配合 QDataStream)、内存加载图片、适配仅接受 QIODevice* 的 API。使用时需注意:必须先 open(),写后需 seek(0) 才能读取;若传入外部 QByteArray,其生命周期须长于 QBuffer。适用于小到中等规模内存数据处理,大文件应避免使用。

本博客分享软硬件一体化开发实战。硬件涵盖 PCB 设计、STM32 等 MCU 底层开发;软件包含 C++、Rust,Qt/QML、PyQt、Slint、TouchGFX、LVGL 各类 GUI 框架。方便软硬件开发者查阅学习。欢迎关注! 546

Qt_03界面类型

Qt的界面类型

u012660296的博客 190

Qt 内嵌页面能显示、按钮调用桌面功能时报 Qt6WebChannel.dll?查桥接层

Qt 桌面程序里的内嵌 HTML 面板能显示静态内容,但点击“读取本地任务”才报 Qt6WebChannel.dll。先保存构建清单,用脱敏测试任务重现;页面能加载不等于 JavaScript 与 C++ 的桥接层也完整。应先确认准确弹窗,再排查模块和页面脚本。 ## Qt6WebChannel.dll 的来源与桥接组件版本 查看发行包里 Qt6Core.d

2301_78581598的博客 204

【Qt】系统相关:UDP 回显服务器

🎬 艾莉丝的简介:QUdpSocket 封装 UDP 套接字描述符,基于 Qt 信号槽机制实现事件驱动 I/O,默认走非阻塞模型。QNetworkDatagram 表示一个完整 UDP 数据报,封装载荷数据、源/目的 IP 与源/目的端口。端口号为 16 位无符号整数,取值范围 0–65535,按 IANA 划分为四段。必须引入 network 模块,否则编译器无法定位 QUdpSocket 头文件。 引入模块后仍提示找不到头文件:执行 qmake 重新解析 .pro,触发工程重新构建。 2.0.2

艾莉丝努力练剑的博客,感谢大家一直以来的对艾莉丝的支持和鼓励,uu们如果对C/C++方向感兴趣的话,可以通过艾莉丝主页的微信名片加艾莉丝的好友,和努力练剑的艾莉丝一起加油! 538

Windows/Linux下强实时运动控制内核(二):基于Qt的Delta机械手的开发应用

强实时运动控制内核MotionRT750下Qt开发Delta机械手的完整开发流程。

weixin_57350300的博客 241

Qt信号与槽机(3)

Qt信号与槽机制支持多种连接方式:一对一(信号连槽或信号连信号)、一对多(一个信号连接多个槽)及多对一(多个信号连接同一槽)。通过connect()函数实现,如connect(sender, &A::sig, receiver, &B::slot)。一对一用于单一响应,一对多可触发多个操作,多对一则实现多源统一处理,灵活高效地构建事件驱动程序。

我的博客 221

Qt信号与槽机(2)

Qt自定义信号与槽需遵循规范:信号在signals下声明,仅声明不实现;槽可位于public或全局作用域,需声明并实现。使用emit发送信号,关联须先于发射。支持参数传递与重载,参数类型和个数需匹配,信号参数可多于槽。通过教师上课、学生响应示例,演示类创建、信号槽声明、连接及触发流程,结合按钮事件实现动态联动,提升程序交互性。

我的博客 201

Qt_05基础界面组件

Qt 基础界面组件

u012660296的博客 252
上一篇: 11.QT-输入类控件|Line Edit|Text Edit|录入个人信息|验证输入框数据|验证两次输入一致|切换显示密码|获取多行输入内容|验证输入框各种信号(C++)
下一篇: 13.QT-DateTime Edit|Dial|Slider|日期计算器|调整窗口透明度|调整窗口大小|自定义快捷键(C++)
ChoSeitaku
博客等级 码龄5年 3452粉丝 557原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值