使用组合框QComboBox模拟购物车

1.组合框: QComboBox

组合框:QComboBox

用于存放一些列表项

实例化

//实例化
    QComboBox* comboBox = new QComboBox(this);

1.1 代码实现

1.1.1 组合框的基本函数

QComboBox

dialog.cpp

#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::Dialog)
{
    ui->setupUi(this);

    //添加列表项
    this->comboBox->addItem("苹果");
    this->comboBox->addItem("香蕉");
    this->comboBox->addItem("西瓜");

    //添加图片
    this->comboBox->addItem(QIcon(":/img/photo.jpg"),"葡萄");

    //一次添加多个列表项
    QStringList list;
    list<<"星期一"<<"星期二"<<"星期三";
    this->comboBox->addItems(list);

    //返回组合框里有多少列表项
    qDebug()<<"组合框里列表项数目"<<this->comboBox->count()<<endl;

    //返回当前列表项的下标
    qDebug()<<"返回当前列表项的下标"<<this->comboBox->currentIndex()<<endl;

    //返回当前列表项
    qDebug()<<"返回当前列表项"<<this->comboBox->currentText()<<endl;

    //在组合框中查询是否有指定的列表项,如果有就返回下标,没有就返回-1
    int index = this->comboBox->findText("星期二");
    qDebug()<<"星期二对应的下标:"<<index<<endl;

    //通过下标找到列表项
    QString text = this->comboBox->itemText(index);
    qDebug()<<"下标为"<<index<<"的列表项是"<<text<<endl;

    //通过下标找到图片
    QIcon icon = this->comboBox->itemIcon(2);

    //在指定位置插入列表项
    QStringList list2;
    list2<<"昨天"<<"今天"<<"明天";
    this->comboBox->insertItems(1,list2);

    //移除指定的列表项
    this->comboBox->removeItem(1);//这里我移除了 昨天

    //将列表项更新为新的列表项
    this->comboBox->setItemText(index,"hello");

   }

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

1.1.2 练习购物车

用组合框模拟账户的存储与取出

使用组合框模拟购物车

(1)用户可以添加物品到购物车中

(2)用户可以移除购物车中指定的物品

(3)用户可以清空并结算购物车中商品总价

(4)用户一个商品用户可以购买多个

效果如下

QConboBox_gouwuche

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <Qdebug>
#include <QComboBox>

QT_BEGIN_NAMESPACE
namespace Ui { class Dialog; }
QT_END_NAMESPACE

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = nullptr);
    ~Dialog();

private slots:
    void on_xigau_clicked();

    void on_car_clicked();

    void on_flower_clicked();

    void on_del_clicked();

    void on_jiesuan_clicked();

private:
    Ui::Dialog *ui;

    //实例化组合框
    QComboBox* comboBox = new QComboBox(this);

};
#endif // DIALOG_H

dialog.cpp

#include "dialog.h"
#include "ui_dialog.h"

//用组合框模拟账户的存储与取出
//    使用组合框模拟购物车
//    (1)用户可以添加物品到购物车中
//    (2)用户可以移除购物车中指定的物品
//    (3)用户可以清空并结算购物车中商品总价
//    (4)用户一个商品用户可以购买多个

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::Dialog)
{
    ui->setupUi(this);

    this->comboBox->move(260,150);
    this->comboBox->resize(100,40);

}

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


void Dialog::on_xigau_clicked()//西瓜
{
    QString xg = ui->xigau->text();

    QStringList watermelon = xg.split(" ");//以空格分割字符串
    this->comboBox->addItem(watermelon[0]);//将物品给组合框选项

}


void Dialog::on_car_clicked()//汽车
{
    QString qiche = ui->car->text();
    QStringList che = qiche.split(" ");//以空格分割字符串
    this->comboBox->addItem(che[0]);

}


void Dialog::on_flower_clicked()//鲜花
{
    QString xianhua = ui->flower->text();
    QStringList hua = xianhua.split(" ");//以空格分割字符串
    this->comboBox->addItem(hua[0]);

}


void Dialog::on_del_clicked()//删除列表项
{
    int index = this->comboBox->currentIndex();
    this->comboBox->removeItem(index);
}


void Dialog::on_jiesuan_clicked()//结算
{
    int sum = 0;
    int num = this->comboBox->count();//获取标签中有多少项
    for(int i=0;i<num;i++){//循环遍历出列表项
        QString cur = this->comboBox->itemText(i);//取出列表项
        if(cur=="西瓜"){
            sum+=12;
        }else if(cur=="汽车"){
            sum+=25;
        }else if(cur=="鲜花"){
            sum+=9;
        }

    }

    ui->label->setText(QString::number(sum));//QString::number(sum)转为字符串
    comboBox->clear();

}


1.2 信号

1.2.1 信号函数

 void activated(int index) //当列表项变化时触发该信号
 void activated(const QString &text)
 void currentIndexChanged(int index) //当前列表项下标变化时触发该信号
 void currentIndexChanged(const QString &text)
 void currentTextChanged(const QString &text)//当前列表项变化时触发该信号
 void editTextChanged(const QString &text)
 void highlighted(int index) //列表项高亮时触发该信号
 void highlighted(const QString &text)
1.2.2 举例

QComboBox

绑定

dialog.cpp

//绑定变化列表项信号,即当列表项被选中触发
    connect(this->comboBox,SIGNAL(activated(QString)),this,SLOT(rece1_Text(QString)));
    //绑定高亮信号,即鼠标放在哪高亮触发
    connect(this->comboBox,SIGNAL(highlighted(int)),this,SLOT(rece2_Text_Index(int)));

定义

dialog.h

public slots://槽
    void rece1_Text(const QString& text);//绑定变化列表项信号,即当列表项被选中触发
    void rece2_Text_Index(int dex);//绑定高亮信号,即鼠标放在哪高亮触发

实现

dialog.cpp

void Dialog::rece1_Text(const QString &text){
    qDebug()<<"列表项"<<text<<endl;
}

void Dialog::rece2_Text_Index(int dex){
    qDebug()<<"下表为"<<dex<<endl;
}

1.3 UI实现

方法解释

    editable:设置组框当前列表项是否可编辑
	currentText:获取组合框中的当前显示的列表项
	currrenIdex:获取当前列表项的下标
	maxVisibleItems:列表项可移动的最大数目
	maxCount:设置组合框中最多能容纳的列表项的数目
	insertPolicy:设置插入列表项的策略
	sizeAdjustPolicy:设置组合框中列表项适应组合框
	minimumContentsLength:最小的列表项的长度
	iconsize:设置图片的大小
	placeholderText:背景提示的文本
	frame:边框
	modelColumn:列表项

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/314387.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大数据实时抓取软件:Maxwell学习网站的高效框架!

介绍&#xff1a;Maxwell是由美国Zendesk开源的&#xff0c;使用Java编写的MySQL实时抓取软件。它能够实时读取MySQL的二进制日志&#xff08;Binlog&#xff09;&#xff0c;并将这些信息生成为JSON格式的消息。进一步地&#xff0c;Maxwell将这些消息作为生产者发送给Kafka、…

【Android+物联网】Android封装MQTT连接阿里云物联网平台

前言&#xff1a; 亲测可行&#xff0c;本文实现Android封装MQTT连接阿里云物联网平台。将MQTT协议和连接阿里云平台的操作通过Android studio写入APP中&#xff0c;并简单设计UI。实现手机APP远程控制单片机LED灯亮灭的功能。 关于《Android软件开发》&#xff0c;见如下专栏…

智能小程序小部件(Widget)开发详解

Widget 代表应用的一个小部件&#xff0c;负责小部件的展示和交互。 小部件(Widget) 的开发在智能小程序的基础上增加一个目录即可&#xff0c;用于存放小部件(Widget)的代码。并在 project.tuya.json 中增加一个声明。 创建小部件(Widget)项目 在 Tuya MiniApp Tools 中&…

【DotNetGuide】C#/.NET/.NET Core学习、工作、面试指南

&#x1f431;‍&#x1f680;C#/.NET/.NET Core学习、工作、面试指南 “ 让现在的自己不再迷茫✨✨✨。 GitHub开源地址&#xff1a;https://github.com/YSGStudyHards/DotNetGuide &#x1f4da;DotNetGuide简介 现如今网上关于Java、前端、Android、Golang...等相关技术的…

基础篇_面向对象(什么是对象,对象演化,继承,多态,封装,接口,Service,核心类库,异常处理)

文章目录 一. 什么是对象1. 抽取属性2. 字段默认值3. this4. 无参构造5. 抽取行为 二. 对象演化1. 对象字段演化2. 对象方法演化3. 贷款计算器 - 对象改造4. 静态变量5. 四种变量 三. 继承1. 继承语法2. 贷款计算器 - 继承改造3. java 类型系统4. 类型转换1) 基本类型转换2) 包…

数据结构04附录01:字符串大写转小写[C++]

图源&#xff1a;文心一言 上机题目练习整理~&#x1f95d;&#x1f95d; 本篇作为字符串的代码补充&#xff0c;提供了3种&#xff08;差别并不大&#xff09;解法以及函数的详细解释&#xff0c;供小伙伴们参考~&#x1f95d;&#x1f95d; 前文&#xff1a;&#x1f338;…

最全的软件测试面试题(含答案)

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;软件测试面试题分享&#xff1a; 1000道软件测试面试题及答案&#x1f4e2;软件测试实战项目分享&#xff1a; 纯接口项目-完…

ME6211C33M5G-N 输出3.3V 500mA 线性稳压器LDO 参数

描述 ME6211系列是高精度&#xff0c;低噪声&#xff0c;CMOS LDO电压调压器。ME6211系列提供低输出噪声&#xff0c;高纹波抑制率&#xff0c;低辍学率和非常快速的开启时间&#xff0c;ME6211系列是当今最前沿的手机的理想选择。ME6211内部包括参考电压源、误差放大器、驱动…

Python从入门到精通 第十一章(面向对象)

一、类和对象 1、面向对象基本概念 &#xff08;1&#xff09;之前学习的编程方式是面向过程的&#xff0c;面向过程和面向对象是两种不同的编程方式。 &#xff08;2&#xff09;过程和函数&#xff1a;过程是早期的一个编程概念&#xff0c;过程类似于函数&#xff0c;只能…

DDNS-GO配置使用教程

环境&#xff1a;openwrt 下载地址&#xff1a;Releases jeessy2/ddns-go GitHub 下载 ssh至openwrt根目录&#xff0c;根据你的处理器选择要下载的版本&#xff0c;我是路由器&#xff0c;选择的是 ddns-go_5.7.1_linux_arm64.tar.gz wget github链接 安装 tar -zxvf…

对象图作业

对象图作业 一. 简答题&#xff08;共3题&#xff0c;100分&#xff09; (简答题) 对象特性的三要素是什么&#xff0c;请通过一个实际的例子来说明三要素的内容。 正确答案&#xff1a; 对象特性的三要素是状态、行为和标识。 张三对象具有身高、体重、学历、职务、收入等状态…

Flink 2.0 状态管理存算分离架构演进

Flink 2.0 状态管理存算分离架构演进 flink 现有状态访问线程模型首先简单来说一下,flink2.0做存算分离,最最主要的一点是解决,大状态的问题,例如一个超过50T的物流数据,大状态恢复可能就要1天,所以才有存算分离这么一个设计初衷。 下面先来看一下 任务是怎么执行提交的,…

浅研究下 DHCP 和 chrony

服务程序&#xff1a; 1.如果有默认配置&#xff0c;请先备份&#xff0c;再进行修改 2.修改完配置文件&#xff0c;请重启服务或重新加载配置文件&#xff0c;否则不生效 有些软件&#xff0c;安装包的名字和系统里服务程序的名字不一样&#xff08;安装包名字&#xff1a;…

Springboot+vue学生考试系统

Springbootvue学生考试系统 演示视频 【Springbootvue学生考试系统】 https://www.bilibili.com/video/BV1gk4y1Q7em/?share_sourcecopy_web&vd_source11344bb73ef9b33550b8202d07ae139b 主要功能&#xff1a; 管理员可以添加题库分配课程教师&#xff0c;指定考试范围指定…

【教3妹学编程-算法题】统计出现过一次的公共字符串

3妹&#xff1a;哈哈哈哈哈哈&#xff0c;太搞笑了~ 呵呵呵呵呵呵 2哥&#xff1a;3妹干嘛呢&#xff0c; 笑的这么魔性&#xff01; 3妹&#xff1a;在看王牌对王牌&#xff0c;老搞笑了 2哥&#xff1a;这季好像没有贾玲吧。 3妹&#xff1a;是啊&#xff0c;听说贾玲去导电影…

仿真验证方法(2)——静态验证

一、静态验证 1.1 概述 在之前的文章中&#xff0c;我们介绍了动态仿真&#xff0c;但是动态仿真用于百万门以上电路时所需时间极长&#xff0c;而且其功能覆盖率取决于所设计的输入激励向量&#xff0c;很难达到100%&#xff0c;因此静态时序分析和等效性检查这样的静态验证是…

MySQL篇—自带物理克隆数据工具Clone插件介绍(第一篇,总共三篇)

各位小伙伴&#xff0c;今天我为大家介绍一下MySQL Clone Plugin这个插件&#xff0c;简单来说&#xff0c;就是MySQL 8.0.17版本之后的一个物理克隆数据工具&#xff0c;它能够帮助我们快速、高效地克隆或复制数据库&#xff0c;极大地简化了数据库迁移、备份和恢复的过程&…

老老实实的程序员该如何描述自己的缺点

答辩的时候&#xff0c;晋升的时候&#xff0c;面试的时候&#xff0c;你有没有经常遇到一个问题&#xff0c;那就是你觉得自己有什么缺点吗&#xff1f; 目录 1. 每个人都有缺点 2. 这道题在考什么&#xff1f; 3. 我之前是怎么回答的 4. 你可以这样回答试一试 5. 总结 …

transbigdata笔记:数据栅格化

1 area_to_grid 在边界或形状中生成矩形栅格 1.1 主要使用方法 transbigdata.area_to_grid(location, accuracy500, methodrect, paramsauto) 1.2 主要参数 location (bounds(List) or shape(GeoDataFrame) 生成栅格的位置。 如果边界为 [lon1&#xff0c; lat1&#xff0…

JS中垃圾数据是如何自动回收的

JS中垃圾数据是如何自动回收的 背景垃圾回收机制调用栈中的数据回收堆空间中数据回收垃圾回收器的工作流程副垃圾回收器主垃圾回收器 全停顿 背景 在JS栈和堆&#xff1a;数据是如何存储的一文中提到了 JavaScript 中的数据是如何存储的&#xff0c;并通过示例代码分析了原始数…