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