QT第3天

 

如上图界面,需求如下:

1、根据名字添加水果,并设置好单价

2、切换文件查看模式

3、点击任意水果可以显示单价

4、重量改变时,总价自动显示

//widget.h
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QListWidgetItem>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
public slots:
    void pbtnChangeModeSlotFunc();
    void listWidgetItemSlotFunc(QListWidgetItem *);
    void spinWeightChangeSlotFunc(double);

    void pbtnAddClickedSlotFunc();
private:
    Ui::Widget *ui;
};
#endif // WIDGET_H
//widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QListWidgetItem>
#include <QDebug>

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

    //设置水果对象

    QListWidgetItem *p1=new QListWidgetItem;
    p1->setText("奇异果");
    QIcon Icon1(":/icon/icon/奇异果.png");
    p1->setIcon(Icon1);
    p1->setData(Qt::UserRole,10.3);//设置单价
    ui->listWidget->addItem(p1);

    QListWidgetItem *p2=new QListWidgetItem;
    p2->setText("山竹");
    QIcon Icon2(":/icon/icon/山竹.png");
    p2->setIcon(Icon2);
    p2->setData(Qt::UserRole,15.6);//设置单价
    ui->listWidget->addItem(p2);

    QListWidgetItem *p3=new QListWidgetItem;
    p3->setText("杨桃");
    QIcon Icon3(":/icon/icon/杨桃.png");
    p3->setIcon(Icon3);
    p3->setData(Qt::UserRole,10.3);//设置单价
    ui->listWidget->addItem(p3);

    QListWidgetItem *p4=new QListWidgetItem;
    p4->setText("柠檬");
    QIcon Icon4(":/icon/icon/柠檬.png");
    p4->setIcon(Icon4);
    p4->setData(Qt::UserRole,9.5);//设置单价
    ui->listWidget->addItem(p4);

    QListWidgetItem *p5=new QListWidgetItem;
    p5->setText("桃子");
    QIcon Icon5(":/icon/icon/桃子.png");
    p5->setIcon(Icon5);
    p5->setData(Qt::UserRole,5.78);//设置单价
    ui->listWidget->addItem(p5);

    QListWidgetItem *p6=new QListWidgetItem;
    p6->setText("梨子");
    QIcon Icon6(":/icon/icon/梨子.png");
    p6->setIcon(Icon6);
    p6->setData(Qt::UserRole,4.91);//设置单价
    ui->listWidget->addItem(p6);

    QListWidgetItem *p7=new QListWidgetItem;
    p7->setText("椰子");
    QIcon Icon7(":/icon/icon/椰子.png");
    p7->setIcon(Icon7);
    p7->setData(Qt::UserRole,10.3);//设置单价
    ui->listWidget->addItem(p7);

    QListWidgetItem *p8=new QListWidgetItem;
    p8->setText("火龙果");
    QIcon Icon8(":/icon/icon/火龙果.png");
    p8->setIcon(Icon8);
    p8->setData(Qt::UserRole,9.99);//设置单价
    ui->listWidget->addItem(p8);

    QListWidgetItem *p9=new QListWidgetItem;
    p9->setText("榴莲");
    QIcon Icon9(":/icon/icon/榴莲.png");
    p9->setIcon(Icon9);
    p9->setData(Qt::UserRole,21.36);//设置单价
    ui->listWidget->addItem(p9);

    ui->spinWeight->setMinimum(0); //设置重量最小值

    connect(ui->pbtnChangeMode,SIGNAL(clicked()),this,SLOT(pbtnChangeModeSlotFunc()));
    connect(ui->listWidget,SIGNAL(itemClicked(QListWidgetItem *)),this,SLOT(listWidgetItemSlotFunc(QListWidgetItem *)));
    connect(ui->spinWeight,SIGNAL(valueChanged(double)),this,SLOT(spinWeightChangeSlotFunc(double)));

    connect(ui->pbtnAdd,SIGNAL(clicked()),this,SLOT(pbtnAddClickedSlotFunc()));
}

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

//切换模式
void Widget::pbtnChangeModeSlotFunc()
{
    static int count=0;
    count++;
    (count%=2)==1?ui->listWidget->setViewMode(QListView::IconMode):ui->listWidget->setViewMode(QListView::ListMode);
}

//点击选项
void Widget::listWidgetItemSlotFunc(QListWidgetItem *)
{
    int index=ui->listWidget->currentRow(); //获取点击的index
    QListWidgetItem* p=ui->listWidget->item(index); //获取点击的对象
    double price=p->data(Qt::UserRole).toDouble();  //获取对象的自定义属性

    ui->spinPrice ->setValue(price);


}

//重量改变
void Widget::spinWeightChangeSlotFunc(double)
{
    double price=ui->spinPrice->value();
    double weight=ui->spinWeight->value();
    ui->spinTotal->setValue(price*weight);
}

//点击添加
void Widget::pbtnAddClickedSlotFunc()
{
    QString name=ui->lineEditName->text();
    double price=ui->spinPriceInit->value();

    QListWidgetItem *p=new QListWidgetItem;
    p->setText(name);
    QString IconName=QString(":/icon/icon/%1.png").arg(name);
    QIcon Icon3(IconName);
    p->setIcon(Icon3);

    p->setData(Qt::UserRole,price);//设置单价
    ui->listWidget->addItem(p);

    ui->lineEditName->setText("");
    ui->spinPriceInit->setValue(0);
}

 

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

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

相关文章

认识监控系统zabbix

利用一个优秀的监控软件&#xff0c;我们可以: ●通过一个友好的界面进行浏览整个网站所有的服务器状态 ●可以在 Web 前端方便的查看监控数据 ●可以回溯寻找事故发生时系统的问题和报警情况 了解zabbix zabbix是什么&#xff1f; ●zabbix 是一个基于 Web 界面的提供分布…

二、QT下载、安装及问题解决(windows系统)

本章节最重要的一点&#xff1a;安装时&#xff0c;路径中不能有中文&#xff0c;切记&#xff0c;否则QT不能正常运行。 下载两种途径&#xff1a; 1、官网下载&#xff0c;慢且不好访问&#xff1b; 2、国内一些大学网站的镜像&#xff0c;下载比较快&#xff0c;但是可能…

Unity中图片合成图集Editor工具

一般图片合成图集用的是Unity自带的SpriteAtlas类添加一个Sprite集合&#xff0c;而所有图片保存在Sprite集合中&#xff0c;然后把Sprite通过Add方法添加到SpriteAtlas类&#xff0c;通过AssetDatabase.CreateAsset()方法来创建图集。

自旋框的使用

1. 自旋框 实例化 //实例化单精度自旋框QSpinBox* spinBox new QSpinBox(this);//实例化双精度自旋框QDoubleSpinBox* doubleSpinBox new QDoubleSpinBox(this);1.1 单精度自旋框 QSpinBox 1.1.1 单精度自旋框的基本函数 QSpinBox_QDoubleSpinBox Dialog.cpp #include "…

高级分布式系统-第12讲 分布式控制经典理论

控制器基础 分布式控制系统的设计&#xff0c;是指在给定系统性能指标的条件下&#xff0c;设计出控制器的控制规律和相应的数字控制算法。 PID控制器 根据偏差的比例&#xff08;Proportional&#xff09;、积分&#xff08;Integral&#xff09;、微分&#xff08;Derivati…

13 | 使用代理ip爬取安居客房源信息

这是一个简单的Python爬虫代码,用于从安居客网站爬取房地产信息。该爬虫使用了代理IP来绕过可能的封禁,并提供了一些基本的信息抽取功能。 如果访问过多,那么可能出现了验证码 对此,最好的方法就是换ip。 使用代理IP的主要目的是保护爬虫的稳定性和隐私。以下是一些常见的原…

现代雷达车载应用——第3章 MIMO雷达技术 3.3节 汽车MIMO雷达测角

经典著作&#xff0c;值得一读&#xff0c;英文原版下载链接【免费】ModernRadarforAutomotiveApplications资源-CSDN文库。 3.3 汽车MIMO雷达测角 在发射天线和接收天线分别为Mt和Mr的汽车MIMO雷达中&#xff0c;可以合成一个由Mt*Mr个阵元组成的虚拟ULA&#xff0c;单元间…

i18n多国语言Internationalization的实现

i18n 是"Internationalization”的缩写&#xff0c;这个术语来源于英文单词中首尾字母“”和“n”以及中间的字符数(共计18个字符) 当我们需要开发不同语言版本时&#xff0c;就可以使用i18n多国语言的一个操作处理&#xff0c;i18n主要实现那一方面的内容呢&#xff1f;…

基于YOLOv7算法的高精度实时六类水果目标检测识别系统(PyTorch+Pyside6+YOLOv7)

摘要&#xff1a;基于YOLOv7算法的高精度实时六类水果目标检测系统可用于日常生活中检测与定位苹果&#xff08;apple&#xff09;、香蕉&#xff08;banan&#xff09;、葡萄&#xff08;grape&#xff09;、橘子&#xff08;orange&#xff09;、菠萝&#xff08;pineapple&a…

代码随想录算法训练营第4天 | 24. 两两交换链表中的节点 , 19.删除链表的倒数第N个节点 , 面试题 02.07. 链表相交 , 142.环形链表II

链表知识基础 文章链接&#xff1a;https://programmercarl.com/%E9%93%BE%E8%A1%A8%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html# 24. 两两交换链表中的节点 题目链接&#xff1a;https://leetcode.cn/problems/swap-nodes-in-pairs/ 使用虚拟头结点&#xff0c;这样会方便很…

Express 应用生成器(脚手架)的安装与使用

1、简介 自动生成一个express搭建的项目结构 官网&#xff1a;Express 应用生成器 2&#xff0c;使用 2.1全局安装&#xff0c;使用管理员打开命令窗口 2.2、安装express # 全局安装express npm install -g express # 全局安装express脚手架 npm install -g express-gene…

对资金类服务幂等设计与测试的思考

之前写过一篇《系统设计的幂等性》科普文章。 幂等性原本是数学上的概念&#xff0c;用在接口上就可以理解为&#xff1a;同一个接口&#xff0c;多次发出同一个请求&#xff0c;必须保证操作只执行一次。调用接口发生异常并且重复尝试时&#xff0c;总是会造成系统所无法承受的…

mysql进阶-索引基础

目录 1. 概念-索引是什么&#xff1f; 2. 索引的数据结构(索引模型) 2.1 二分查找&#xff1a; 2.2 二叉查找树&#xff08;BST Binary Search Tree&#xff09;&#xff1a; 2.3 平衡二叉树(AVL Tree Balanced binary search trees) 2.4 多路平衡查找树(B Tree Balanced…

墙地砖外形检测的技术方案-技术方案概述

技术方案概述 墙地砖检测内容包括&#xff1a;轮廓尺寸、边直度和直角度特征。检测墙地砖检测系统的技术路线如图所示&#xff0c;包括的处理模块有&#xff1a;图像获取、图像复原、图像增强、图像分割、外部检测算法。下面分别讲解这个处理模块的作用。 墙地砖检测的技术路线…

WorkPlus企业打破信息孤岛,构建统一工作平台的首选之一

在当今数字化时代&#xff0c;企业内部存在着繁多的工作应用和系统。要实现高效的工作协作&#xff0c;企业需要一个统一的工作平台来打破信息孤岛&#xff0c;提升协作效率。作为一家领先的企业统一工作平台&#xff0c;WorkPlus以其卓越的性能和专业的功能&#xff0c;助力企…

线性调频信号的解线调(dechirp,去斜)处理matlab仿真

线性调频信号的解线调 线性调频信号的回波模型参考信号去斜处理去斜处理傅里叶变换得到脉压结果解线调仿真总结 线性调频信号的回波模型 对于线性调频脉冲压缩雷达&#xff0c;其发射信号为&#xff1a; s ( t ) r e c t ( t T ) e x p ( j π μ t 2 ) \begin{equation} s(…

mac vscode latex实用

网上有教程怎么在vscode里安装macTex以及插件&#xff0c;然后就可以在latex里写代码了&#xff0c;这里需要修改的是对应的json文件&#xff0c;输入command P,可以看到最近打开的json设置文件&#xff0c;结果如下 然后设置这个json文件&#xff0c;我的json文件设置如下 …

基于SSM的网上订餐管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

C语言经典算法之直接排序算法

目录 前言 一、代码实现 二、时空复杂度 时间复杂度&#xff1a; 空间复杂度&#xff1a; 前言 建议&#xff1a;1.学习算法最重要的是理解算法的每一步&#xff0c;而不是记住算法。 2.建议读者学习算法的时候&#xff0c;自己手动一步一步地运行算法。 tips:希尔排序算…

大数据 - Kafka系列《一》- Kafka基本概念

目录 &#x1f436;1.1 什么是kafka &#x1f436;1.2 Kafka可以用来做什么 &#x1f436;1.3 kafka的特点 &#x1f959;1. 高吞吐量、低延迟 &#x1f959;2. 可扩展性 &#x1f959;3. 持久性、可靠性 &#x1f959;4. 容错性 &#x1f959;5. 高并发 &#x1f436…
最新文章