QT超市自助结算系统

widget.h:

#ifndef WIDGET_H

#define WIDGET_H

#include <QWidget>

#include <QStringList>

#include <QComboBox>

QT_BEGIN_NAMESPACE

namespace Ui { class Widget; }

QT_END_NAMESPACE

class Widget : public QWidget

{

    Q_OBJECT

public:

    Widget(QWidget *parent = nullptr);

    ~Widget();

private slots:

    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

    void on_comboBox_activated(const QString &arg1);

    void on_comboBox_2_activated(const QString &arg1);

    void on_comboBox_3_activated(const QString &arg1);

private:

    Ui::Widget *ui;

    QString SelectedProducts; //存储当前选中的商品

    double PriceAll;

    QString GetPath(QString s);

    QString GetName(QString s);

    double GetPrice(QString s);

    QString GetUnit(QString s);

    QString FindCommodityByName(QString name, QStringList list);

    void Updata_label(QString s);


 

    //商品信息存储数据格式 名称,单价,单位,图片名称

    QStringList meat ={

        //肉类

        "鲜牛肉,80,kg,鲜牛肉.jpg",

        "鸡腿肉,30,kg,鸡腿肉.jpg",

        "鸡胸肉,25,kg,鸡胸肉.jpg",

        "虾,70,kg,虾.jpg",

        "鱼,30,kg,鱼.jpg",

        "猪腿肉,28,kg,猪腿肉.jpg"

    };

    QStringList vegetable ={

        //蔬菜

        "黄瓜,10,kg,黄瓜.jpg",

        "洋葱,8,kg,洋葱.jpg",

        "苦瓜,9,kg,苦瓜.jpg",

        "四季豆,7,kg,四季豆.jpg",

        "小青菜,5,kg,小青菜.jpg",

        "玉米,8,kg,玉米.jpg"

    };

    QStringList fruit = {

        //水果

        "草莓,50,kg,草莓.jpg",

        "猕猴桃,20,kg,猕猴桃.jpg",

        "石榴,16,kg,石榴.jpg",

        "香蕉,6,kg,香蕉.jpg",

        "橙子,8,kg,橙子.jpg",

        "苹果,8,kg,苹果.jpg",

        "樱桃,30,kg,樱桃.jpg"

    };

};

#endif // WIDGET_H

widget.cpp:

#include "widget.h"

#include "ui_widget.h"

#include <QDebug>

//从字符串中解析需要的数据

QString Widget::GetPath(QString s)

{

    QStringList l = s.split(",");

    return "/home/xwq/tmp/240702qt_obj/img/"+l[3];

}

QString Widget::GetName(QString s)

{

    QStringList l = s.split(",");

    return l[0];

}

double Widget::GetPrice(QString s)

{

    double out = 0;

    QStringList l = s.split(",");

    out = l[1].toDouble();

    return out;

}

QString Widget::GetUnit(QString s)

{

    QStringList l = s.split(",");

    return l[2];

}

//通过名字找对应商品信息

QString Widget::FindCommodityByName(QString name, QStringList list)

{

    for(int i=0;i<list.length();i++)

    {

        if(name == GetName(list[i])) return list[i];

    }

    qDebug() << "没有该商品:" << name;

    return nullptr;

}

//s:商品信息,更新到label显示

void Widget::Updata_label(QString s)

{

    QPixmap map(GetPath(s));

    ui->label->setPixmap(map);

    QString Unit;

    Unit.sprintf("%.2f元/%s",GetPrice(s),GetUnit(s).toStdString().c_str());

    ui->label_9->setText(Unit);

    ui->doubleSpinBox->setValue(0.1); //默认初始

}


 

Widget::Widget(QWidget *parent)

    : QWidget(parent)

    , ui(new Ui::Widget)

{

    ui->setupUi(this);

    PriceAll = 0;

    setWindowTitle("超市自助收银系统");

    //图片适应标签

    ui->label->setScaledContents(true);

    //设置label背景不透明

    ui->label_9->setAutoFillBackground(true);

    ui->label_5->setAutoFillBackground(true);

    //填充商品信息到 comboBox中

    //遍历商品信息列表

    for(int i=0;i<meat.length();i++)

    {

        QIcon icon(GetPath(meat[i]));

        ui->comboBox->addItem(icon,GetName(meat[i]));

    }

    ui->comboBox->setIconSize(QSize(50,50));

    for(int i=0;i<vegetable.length();i++)

    {

        QIcon icon(GetPath(vegetable[i]));

        ui->comboBox_2->addItem(icon,GetName(vegetable[i]));

    }

    ui->comboBox_2->setIconSize(QSize(50,50));

    for(int i=0;i<fruit.length();i++)

    {

        QIcon icon(GetPath(fruit[i]));

        ui->comboBox_3->addItem(icon,GetName(fruit[i]));

    }

    ui->comboBox_3->setIconSize(QSize(50,50));

    ui->comboBox_4->setIconSize(QSize(50,50));

    ui->doubleSpinBox->setMinimum(0.05);

}

Widget::~Widget()

{

    delete ui;

}


 

void Widget::on_pushButton_clicked() //加入购物车

{

    QIcon icon( GetPath(SelectedProducts));

    ui->comboBox_4->addItem(icon, GetName(SelectedProducts));

    PriceAll += GetPrice(SelectedProducts) * ui->doubleSpinBox->value();

    QString s;

    s.sprintf("%.2f元",PriceAll);

    ui->label_8->setText(s);

}

void Widget::on_pushButton_2_clicked()  //结算

{

}

void Widget::on_comboBox_activated(const QString &arg1)//肉类

{

    //通过名字找到商品信息

    QString s = FindCommodityByName(arg1, meat);

    SelectedProducts = s;

    if(s != nullptr)

    {

        Updata_label(s);

    }

}

void Widget::on_comboBox_2_activated(const QString &arg1)

{//蔬菜

    //通过名字找到商品信息

    QString s = FindCommodityByName(arg1, vegetable);

    SelectedProducts = s;

    if(s != nullptr)

    {

        Updata_label(s);

    }

}

void Widget::on_comboBox_3_activated(const QString &arg1)

{//水果

    //通过名字找到商品信息

    QString s = FindCommodityByName(arg1, fruit);

    SelectedProducts = s;

    if(s != nullptr)

    {

        Updata_label(s);

    }

}

main.cpp:

#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])

{

    QApplication a(argc, argv);

    Widget w;

    w.show();

    return a.exec();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值