使用组合框QComboBox模拟购物车

news2024/9/23 1:25:42

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:列表项

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt QListWidget列表框控件

文章目录 1 属性和方法1.1 外观1.2 添加条目1.3 删除条目1.4 信号和槽 2 实例2.1 布局2.2 代码实现 Qt中的列表框控件&#xff0c;对应的类是QListWidget 它用于显示多个列表项&#xff0c;列表项对应的类是QListWidgetitem 1 属性和方法 QListWidget有很多属性和方法&#xf…

linux磁盘清理_docker/overlay2爆满

问题&#xff1a;无意间发现linux服务器登陆有问题&#xff0c;使用df命令发现目录满了。 1. 确定哪里占用了大量内存。 cd / du -sh * | sort -rh经过一段时间后&#xff0c;显示如下&#xff1a; // 474G home // 230G var // 40G usr // 10G snap // --- 根据实际情…

Java内存模型之可见性

文章目录 1.什么是可见性问题2.为什么会有可见性问题3.JMM的抽象&#xff1a;主内存和本地内存3.1 什么是主内存和本地内存3.2 主内存和本地内存的关系 4.Happens-Before原则4.1 什么是Happens-Before4.2 什么不是Happens-Before4.3 Happens-Before规则有哪些4.4 演示&#xff…

Kafka的核心原理

Topic的分区和副本机制 分区有什么用呢? 作用&#xff1a; 1- 避免单台服务器容量的限制: 每台服务器的磁盘存储空间是有上限。Topic分成多个Partition分区&#xff0c;可以避免单个Partition的数据大小过大&#xff0c;导致服务器无法存储。利用多台服务器的存储能力&#…

时序预测 | Matlab实现EEMD-SSA-BiLSTM、EEMD-BiLSTM、SSA-BiLSTM、BiLSTM时序预测对比

时序预测 | Matlab实现EEMD-SSA-BiLSTM、EEMD-BiLSTM、SSA-BiLSTM、BiLSTM时间序列预测对比 目录 时序预测 | Matlab实现EEMD-SSA-BiLSTM、EEMD-BiLSTM、SSA-BiLSTM、BiLSTM时间序列预测对比预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现EEMD-SSA-BiLSTM、…

HTML5+CSS3+JS小实例:音频可视化

实例:音频可视化 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><m…

Rust-模式解构

match 首先&#xff0c;我们看看使用match的最简单的示例&#xff1a; exhaustive 有些时候我们不想把每种情况一一列出&#xff0c;可以用一个下划线来表达“除了列出来的那些之外的其他情况”&#xff1a; 下划线 下划线还能用在模式匹配的各种地方&#xff0c;用来表示…

【STM32】STM32学习笔记-USART串口手法HEX和文本数据包(29)

00. 目录 文章目录 00. 目录01. 串口简介02. 串口收发HEX数据包接线图03. 串口收发HEX数据包示例104. 串口收发HEX数据包示例205. 串口收发文本数据包接线图06. 串口收发文本数据包示例07. 程序示例下载08. 附录 01. 串口简介 串口通讯(Serial Communication)是一种设备间非常…

高精度彩色3D相机:开启崭新的彩色3D成像时代

3D成像的新时代 近年来&#xff0c;机器人技术的快速发展促使对3D相机技术的需求不断增加&#xff0c;原因在于&#xff0c;相机在提高机器人的性能和实现多种功能方面发挥了决定性作用。然而&#xff0c;其中许多应用所需的解决方案更复杂&#xff0c;仅提供环境的深度信息是…

【LeetCode】142. 环形链表 II(中等)——代码随想录算法训练营Day04

题目链接&#xff1a;142. 环形链表 II 题目描述 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了…

Docker 介绍 及 支持的操作系统

Docker组成&#xff1a; Docker主机(Host)&#xff1a; 一个物理机或虚拟机, 用于运行Docker服务进程和容器, 也成为宿主机, node节点。 Docker服务器端(Server)&#xff1a; Docker守护进程, 运行Docker容器。 Docker客户端(Client)&#xff1a; 客户端使用docker命令或其他工…

层叠布局(Stack)

目录 1、概述 2、开发布局 3、对齐方式 3.1、TopStart 3.2、Top 3.3、TopEnd 3.4、Start 3.5、Center 3.6、End 3.7、BottomStart 3.8、Bottom 3.9、BottomEnd 4、Z序控制 5、场景示例 1、概述 层叠布局&#xff08;StackLayout&#xff09;用于在屏幕上预留一…

Linux的SSH服务

一.SSH服务简介 1.什么是SSH SSH&#xff08;Secure Shell&#xff09;是一种安全通道协议&#xff0c;主要用来实现字符界面的远程登录、远程复制等功能。SSH 协议对通信双方的数据传输进行了加密处理&#xff0c;其中包括用户登录时输入的用户口令&#xff0c;SSH 为建立在应…

Elasticsearch:Search tutorial - 使用 Python 进行搜索 (四)

在本节中&#xff0c;你将了解另一种机器学习搜索方法&#xff0c;该方法利用 Elastic Learned Sparse EncodeR 模型或 ELSER&#xff0c;这是一种由 Elastic 训练来执行语义搜索的自然语言处理模型。这是继之前的文章 “Elasticsearch&#xff1a;Search tutorial - 使用 Pyth…

NeRF算法模型简析:从理论到实践的轻度解析以及如何编辑和微调

nerf模型可编辑的&#xff1f; NeRF模型的可编辑性&#xff08;editability&#xff09;指的是能够修改预训练的NeRF模型以改变其生成的场景或对象的某些特征&#xff0c;而不是从头开始重新训练模型。这种编辑可以是改变颜色、形状、纹理或者添加、移除和修改场景中的对象。 在…

在CentOS上设置和管理静态HTTP网站的版本控制

在CentOS上设置和管理静态HTTP网站的版本控制是一项重要的任务&#xff0c;它可以帮助您跟踪和回滚对网站所做的更改&#xff0c;确保数据的一致性和完整性。以下是在CentOS上设置和管理静态HTTP网站的版本控制的步骤&#xff1a; 安装版本控制系统在CentOS上安装Git或其他版本…

LeetCode讲解篇之78. 子集

文章目录 题目描述题解思路题解代码 题目描述 题解思路 初始化一个start变量记录当前从哪里开始遍历搜索nums 搜索过程的数字组合加入结果集 然后从start下标开始遍历nums&#xff0c;更新start&#xff0c;递归搜索 直到搜索完毕&#xff0c;返回结果集 题解代码 class …

记录用python封装的第一个小程序

前言 我要封装的是前段时间复现的一个视频融合拼接的程序&#xff0c;现在我打算将他封装成exe程序&#xff0c;我在这里只记录一下我封装的过程&#xff0c;使用的是pyinstaller&#xff0c;具体的封装知识我就不多说了&#xff0c;可以参考我另一篇博客&#xff1a;将Python…

逼格满满,推荐一个高效测试用例工具:XMind2TestCase !

一、背景 软件测试的核心是什么&#xff1f;毫无疑问是测试分析和测试用例设计&#xff0c;也是日常测试投入最多时间的工作内容之一。 然而&#xff0c;传统的测试用例设计过程有很多痛点&#xff1a; 1、使用Excel表格进行测试用例设计&#xff0c;虽然成本低&#xff0c;但…

POI:对Word的基本操作

1 向word中写入文本并设置样式 package com.example;import org.apache.poi.xwpf.usermodel.*;import java.io.File; import java.io.FileOutputStream;/*** Author&#xff1a;xiexu* Date&#xff1a;2024/1/12 23:54*/ public class WriteWord {static String PATH "…