如上图界面,需求如下:
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_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic: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(); //获取点击的indexQListWidgetItem* 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);
}