#include "cai1.h"
#include "cai2.h"
#include "cai3.h"
#include "cai4.h"
#include "cai5.h"
#include "cai6.h"
#include "diancai.h"
#include "ui_diancai.h"
#include "dingdan.h"
diancai::diancai(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::diancai),
m_fuwu(nullptr),
m_dingdan(nullptr),
m_jiehzang(nullptr),
m_tcpSocket(new QTcpSocket(this)), // 初始化 TCP 套接字
m_serviceSocket(new QTcpSocket(this)) // 初始化服务socket
{
ui->setupUi(this);
on_specialtyBt_clicked();
connect(m_tcpSocket, &QTcpSocket::connected, this, &diancai::sendOrder);
connect(m_tcpSocket, &QTcpSocket::bytesWritten, this, &diancai::onBytesWritten);
connect(m_tcpSocket, &QTcpSocket::disconnected, this, &diancai::onDisconnected);
// connect(m_tcpSocket, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error), this, &diancai::onSocketError);
connect(m_serviceSocket, &QTcpSocket::connected, this, &diancai::sendServiceRequest);
connect(m_serviceSocket, &QTcpSocket::bytesWritten, this, &diancai::onServiceBytesWritten);
connect(m_serviceSocket, &QTcpSocket::disconnected, this, &diancai::onServiceDisconnected);
connect(m_tcpSocket, &QTcpSocket::connected, this, &diancai::sendOrder);
}
diancai::~diancai()
{
delete ui;
if (m_fuwu) {
delete m_fuwu;
}
if (m_dingdan) {
delete m_dingdan;
}
if (m_jiehzang) {
delete m_jiehzang;
}
}
void diancai::on_specialtyBt_clicked()
{
ui->tableWidget_1->setRowCount(2);
ui->tableWidget_1->setColumnCount(3);
cai1 *item1 = new cai1();
ui->tableWidget_1->setCellWidget(0,0,item1);
item1->setInfo("地三鲜", 18, "D:/QT2/main/pic/cai1.png");
// QString key1 = item1->getDishKey();
// if (m_dishCountMap.contains(key1)) {
// item1->setCount(m_dishCountMap[key1]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
// }
connect(item1, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
cai1 *item2 = new cai1();
ui->tableWidget_1->setCellWidget(0,1,item2);
item2->setInfo("北京烤鸭", 40, "D:/QT2/main/pic/cai2.png");
QString key2 = item2->getDishKey();
if (m_dishCountMap.contains(key2)) {
item2->setCount(m_dishCountMap[key2]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item2, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
cai1 *item3 = new cai1();
ui->tableWidget_1->setCellWidget(0,2,item3);
item3->setInfo("小龙虾", 38, "D:/QT2/main/pic/01.png");
QString key3 = item3->getDishKey();
if (m_dishCountMap.contains(key3)) {
item3->setCount(m_dishCountMap[key3]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item3, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
cai1 *item4 = new cai1();
ui->tableWidget_1->setCellWidget(1,0,item4);
item4->setInfo("粉蒸肉", 35, "D:/QT2/main/pic/07.png");
QString key4 = item4->getDishKey();
if (m_dishCountMap.contains(key4)) {
item4->setCount(m_dishCountMap[key4]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item4, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
cai1 *item5 = new cai1();
ui->tableWidget_1->setCellWidget(1,1,item5);
item5->setInfo("粉蒸肉", 35, "D:/QT2/main/pic/08.png");
QString key5 = item5->getDishKey();
if (m_dishCountMap.contains(key5)) {
item5->setCount(m_dishCountMap[key5]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item5, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
cai1 *item6 = new cai1();
ui->tableWidget_1->setCellWidget(1,2,item6);
item6->setInfo("粉蒸肉", 35, "D:/QT2/main/pic/09.png");
QString key6 = item6->getDishKey();
if (m_dishCountMap.contains(key6)) {
item6->setCount(m_dishCountMap[key6]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item6, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
}
void diancai::on_stirBt_clicked()
{
diancai::resetTableWidgets();
ui->tableWidget_1->setRowCount(2);
ui->tableWidget_1->setColumnCount(3);
// for(int i=0; i<2; i++){
// for(int j=0;j<3; j++){
cai1 *item1 = new cai1();
ui->tableWidget_1->setCellWidget(0,0,item1);
item1->setInfo("西红柿炒鸡蛋", 15, "D:/QT2/main/pic/cai3.png");
QString key1 = item1->getDishKey();
if (m_dishCountMap.contains(key1)) {
item1->setCount(m_dishCountMap[key1]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item1, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
// }
// }
// for(int i=0; i<2; i++){
// for(int j=0;j<3; j++){
cai1 *item2 = new cai1();
ui->tableWidget_1->setCellWidget(0,1,item2);
item2->setInfo("青椒炒肉条", 25, "D:/QT2/main/pic/cai4.png");
QString key2 = item2->getDishKey();
if (m_dishCountMap.contains(key2)) {
item2->setCount(m_dishCountMap[key2]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item2, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
// }
// }
// for(int i=0; i<2; i++){
// for(int j=0;j<3; j++){
cai1 *item3 = new cai1();
ui->tableWidget_1->setCellWidget(0,2,item3);
item3->setInfo("青椒炒蛋", 18, "D:/QT2/main/pic/102.png");
QString key3 = item3->getDishKey();
if (m_dishCountMap.contains(key3)) {
item3->setCount(m_dishCountMap[key3]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item3, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
// }
// }
// for(int i=0; i<2; i++){
// for(int j=0;j<3; j++){
cai1 *item4 = new cai1();
ui->tableWidget_1->setCellWidget(1,0,item4);
item4->setInfo("清炒豆芽", 15, "D:/QT2/main/pic/cai6.png");
QString key4 = item4->getDishKey();
if (m_dishCountMap.contains(key4)) {
item4->setCount(m_dishCountMap[key4]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item4, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
// }
// }
// for(int i=0; i<2; i++){
// for(int j=0;j<3; j++){
cai1 *item5 = new cai1();
ui->tableWidget_1->setCellWidget(1,1,item5);
item5->setInfo("辣椒炒五花肉", 30, "D:/QT2/main/pic/10.png");
QString key5 = item5->getDishKey();
if (m_dishCountMap.contains(key5)) {
item5->setCount(m_dishCountMap[key5]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item5, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
// }
// }
// for(int i=0; i<2; i++){
// for(int j=0;j<3; j++){
cai1 *item6 = new cai1();
ui->tableWidget_1->setCellWidget(1,2,item6);
item6->setInfo("麻婆豆腐", 20, "D:/QT2/main/pic/101.png");
QString key6 = item6->getDishKey();
if (m_dishCountMap.contains(key6)) {
item6->setCount(m_dishCountMap[key6]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item6, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
// }
// }
}
void diancai::resetTableWidgets()
{
// 先销毁已有的所有窗口
int rowCount = ui->tableWidget_1->rowCount();
int colCount = ui->tableWidget_1->columnCount();
for (int i = 0; i < rowCount; ++i) {
for (int j = 0; j < colCount; ++j) {
// 获取单元格中的部件
QWidget* widget = ui->tableWidget_1->cellWidget(i, j);
if (widget) {
cai1 *item = qobject_cast<cai1*>(widget);
if (item) {
QString key = item->getDishKey(); // 假设 cai1 类有一个 getDishKey 方法返回菜品的唯一标识
m_dishCountMap[key] = item->getCount(); // 假设 cai1 类有一个 getCount 方法返回菜品的数量
}
}
}
}
for (int i = 0; i < rowCount; ++i) {
for (int j = 0; j < colCount; ++j) {
// 获取单元格中的部件
QWidget* widget = ui->tableWidget_1->cellWidget(i, j);
if (widget) {
// 从表格中移除并删除部件
ui->tableWidget_1->setCellWidget(i, j, nullptr);
delete widget; // 销毁窗口
}
}
}
}
void diancai::on_soupBt_clicked()
{
diancai::resetTableWidgets();
ui->tableWidget_1->setRowCount(2);
ui->tableWidget_1->setColumnCount(3);
for(int i=0; i<2; i++){
for(int j=0;j<3; j++){
cai1 *item = new cai1();
ui->tableWidget_1->setCellWidget(0,0,item);
item->setInfo("冬瓜排骨汤", 18, "D:/QT2/main/pic/cai9.png");
QString key = item->getDishKey();
if (m_dishCountMap.contains(key)) {
item->setCount(m_dishCountMap[key]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
}
}
for(int i=0; i<2; i++){
for(int j=0;j<3; j++){
cai1 *item = new cai1();
ui->tableWidget_1->setCellWidget(0,1,item);
item->setInfo("萝卜菌菇汤", 28, "D:/QT2/main/pic/cai10.png");
QString key = item->getDishKey();
if (m_dishCountMap.contains(key)) {
item->setCount(m_dishCountMap[key]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
}
}
for(int i=0; i<2; i++){
for(int j=0;j<3; j++){
cai1 *item = new cai1();
ui->tableWidget_1->setCellWidget(0,2,item);
item->setInfo("枸杞鸡汤", 18, "D:/QT2/main/pic/cai11.png");
QString key = item->getDishKey();
if (m_dishCountMap.contains(key)) {
item->setCount(m_dishCountMap[key]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
}
}
for(int i=0; i<2; i++){
for(int j=0;j<3; j++){
cai1 *item = new cai1();
ui->tableWidget_1->setCellWidget(1,0,item);
item->setInfo("银耳薏仁汤", 20, "D:/QT2/main/pic/cai12.png");
QString key = item->getDishKey();
if (m_dishCountMap.contains(key)) {
item->setCount(m_dishCountMap[key]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
}
}
for(int i=0; i<2; i++){
for(int j=0;j<3; j++){
cai1 *item = new cai1();
ui->tableWidget_1->setCellWidget(1,1,item);
item->setInfo("萝卜玉米排骨汤", 25, "D:/QT2/main/pic/103.png");
QString key = item->getDishKey();
if (m_dishCountMap.contains(key)) {
item->setCount(m_dishCountMap[key]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
}
}
for(int i=0; i<2; i++){
for(int j=0;j<3; j++){
cai1 *item = new cai1();
ui->tableWidget_1->setCellWidget(1,2,item);
item->setInfo("牛肉蔬菜汤", 30, "D:/QT2/main/pic/104.png");
QString key = item->getDishKey();
if (m_dishCountMap.contains(key)) {
item->setCount(m_dishCountMap[key]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
}
}
}
void diancai::on_snackBt_clicked()
{
diancai::resetTableWidgets();
ui->tableWidget_1->setRowCount(2);
ui->tableWidget_1->setColumnCount(3);
for(int i=0; i<2; i++){
for(int j=0;j<3; j++){
cai1 *item = new cai1();
ui->tableWidget_1->setCellWidget(0,0,item);
item->setInfo("凉拌腐竹", 12, "D:/QT2/main/pic/cai5.png");
QString key = item->getDishKey();
if (m_dishCountMap.contains(key)) {
item->setCount(m_dishCountMap[key]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
}
}
for(int i=0; i<2; i++){
for(int j=0;j<3; j++){
cai1 *item = new cai1();
ui->tableWidget_1->setCellWidget(0,1,item);
item->setInfo("凉拌海带", 10, "D:/QT2/main/pic/cai7.png");
QString key = item->getDishKey();
if (m_dishCountMap.contains(key)) {
item->setCount(m_dishCountMap[key]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
}
}
for(int i=0; i<2; i++){
for(int j=0;j<3; j++){
cai1 *item = new cai1();
ui->tableWidget_1->setCellWidget(0,2,item);
item->setInfo("凉拌凉皮", 8, "D:/QT2/main/pic/cai8.png");
QString key = item->getDishKey();
if (m_dishCountMap.contains(key)) {
item->setCount(m_dishCountMap[key]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
}
}
for(int i=0; i<2; i++){
for(int j=0;j<3; j++){
cai1 *item = new cai1();
ui->tableWidget_1->setCellWidget(1,0,item);
item->setInfo("酒鬼花生", 5, "D:/QT2/main/pic/cai13.png");
QString key = item->getDishKey();
if (m_dishCountMap.contains(key)) {
item->setCount(m_dishCountMap[key]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
}
}
for(int i=0; i<2; i++){
for(int j=0;j<3; j++){
cai1 *item = new cai1();
ui->tableWidget_1->setCellWidget(1,1,item);
item->setInfo("酸辣豆角", 8, "D:/QT2/main/pic/cai14.png");
QString key = item->getDishKey();
if (m_dishCountMap.contains(key)) {
item->setCount(m_dishCountMap[key]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
}
}
for(int i=0; i<2; i++){
for(int j=0;j<3; j++){
cai1 *item = new cai1();
ui->tableWidget_1->setCellWidget(1,2,item);
item->setInfo("凉拌黄瓜", 10, "D:/QT2/main/pic/cai16.png");
QString key = item->getDishKey();
if (m_dishCountMap.contains(key)) {
item->setCount(m_dishCountMap[key]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
}
}
}
void diancai::on_drinkBt_clicked()
{
diancai::resetTableWidgets();
ui->tableWidget_1->setRowCount(2);
ui->tableWidget_1->setColumnCount(3);
for(int i=0; i<2; i++){
for(int j=0;j<3; j++){
cai1 *item = new cai1();
ui->tableWidget_1->setCellWidget(0,0,item);
item->setInfo("青岛啤酒", 8, "D:/QT2/main/pic/cai17.png");
QString key = item->getDishKey();
if (m_dishCountMap.contains(key)) {
item->setCount(m_dishCountMap[key]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
}
}
for(int i=0; i<2; i++){
for(int j=0;j<3; j++){
cai1 *item = new cai1();
ui->tableWidget_1->setCellWidget(0,1,item);
item->setInfo("可乐", 4, "D:/QT2/main/pic/cai18.png");
QString key = item->getDishKey();
if (m_dishCountMap.contains(key)) {
item->setCount(m_dishCountMap[key]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
}
}
for(int i=0; i<2; i++){
for(int j=0;j<3; j++){
cai1 *item = new cai1();
ui->tableWidget_1->setCellWidget(0,2,item);
item->setInfo("橙汁", 5, "D:/QT2/main/pic/cai19.png");
QString key = item->getDishKey();
if (m_dishCountMap.contains(key)) {
item->setCount(m_dishCountMap[key]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
}
}
for(int i=0; i<2; i++){
for(int j=0;j<3; j++){
cai1 *item = new cai1();
ui->tableWidget_1->setCellWidget(1,0,item);
item->setInfo("王老吉", 5, "D:/QT2/main/pic/cai21.png");
QString key = item->getDishKey();
if (m_dishCountMap.contains(key)) {
item->setCount(m_dishCountMap[key]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
}
}
for(int i=0; i<2; i++){
for(int j=0;j<3; j++){
cai1 *item = new cai1();
ui->tableWidget_1->setCellWidget(1,1,item);
item->setInfo("老村长酒", 20, "D:/QT2/main/pic/cai20.png");
QString key = item->getDishKey();
if (m_dishCountMap.contains(key)) {
item->setCount(m_dishCountMap[key]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
}
}
for(int i=0; i<2; i++){
for(int j=0;j<3; j++){
cai1 *item = new cai1();
ui->tableWidget_1->setCellWidget(1,2,item);
item->setInfo("椰汁", 5, "D:/QT2/main/pic/105.png");
QString key = item->getDishKey();
if (m_dishCountMap.contains(key)) {
item->setCount(m_dishCountMap[key]); // 假设 cai1 类有一个 setCount 方法设置菜品的数量
}
connect(item, &cai1::orderInfoChanged, [this](const QString& name, double price, int count) {
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->updateOrderInfo(name, price, count);
});
}
}
}
void diancai::setTableNumber(const QString& tableNumber)
{
ui->TableEdit->setText(tableNumber);
}
void diancai::setPeopleCount(const QString& peopleCount)
{
ui->peopleEdit->setText(peopleCount);
}
void diancai::on_backBt_clicked()
{
emit backToMainWindow(); // 发出返回主窗口的信号
this->hide(); // 隐藏当前窗口
}
void diancai::on_serviceBt_clicked()
{
if (!m_fuwu) {
m_fuwu = new fuwu(this);
}
m_fuwu->show();
// m_tcpSocket->connectToHost("192.168.64.93", 9494); // 连接到服务器
m_serviceSocket->connectToHost("192.168.64.93", 9494);
}
void diancai::on_orderBt_clicked()
{
if (!m_dingdan) {
m_dingdan = new dingdan(this);
}
m_dingdan->show();
}
void diancai::on_checkoutBt_clicked()
{
if (!m_jiehzang) {
m_jiehzang = new jiehzang(this);
}
if (m_dingdan) {
m_jiehzang->setTotalPrice(m_dingdan->getTotalPrice()); // 假设添加了 getTotalPrice 方法
}
m_jiehzang->show();
}
void diancai::on_sendBT_clicked()
{
// 连接到服务器
m_tcpSocket->connectToHost("192.168.64.93", 9494); // IP 地址和端口号
// connect(m_tcpSocket, &QTcpSocket::connected, this, [this]() {
// sendOrder();
// });
}
void diancai::sendOrder()
{
// 获取桌号和人数
QString tableNumber = ui->TableEdit->text();
QString peopleCount = ui->peopleEdit->text();
// 获取订单信息
QString orderInfo;
if (m_dingdan) {
orderInfo = m_dingdan->getOrderInfo();
}
// 构造要发送的消息
// QString message = QString("桌号: %1\n人数: %2\n%3").arg(tableNumber).arg(peopleCount).arg(orderInfo);
QString message = QString("订单信息\n桌号: %1\n人数: %2\n%3")
.arg(tableNumber).arg(peopleCount).arg(orderInfo);
m_tcpSocket->write(message.toUtf8());
}
void diancai::onBytesWritten(qint64 bytes)
{
qDebug() << "Bytes written:" << bytes;
// 关闭连接
m_tcpSocket->disconnectFromHost();
}
void diancai::onDisconnected()
{
qDebug() << "Disconnected from server";
}
void diancai::onSocketError(QAbstractSocket::SocketError socketError)
{
qDebug() << "Socket error:" << m_tcpSocket->errorString();
}
void diancai::sendServiceRequest()
{
QString tableNumber = ui->TableEdit->text();
// QString message = QString("桌号:%1需要服务").arg(ui->TableEdit->text());
QString message = QString("服务请求\n桌号:%1需要服务").arg(ui->TableEdit->text());
// m_tcpSocket->write(message.toUtf8());
m_serviceSocket->write(message.toUtf8());
}
void diancai::onOrderBytesWritten(qint64 bytes)
{
qDebug() << "Order bytes written:" << bytes;
m_tcpSocket->disconnectFromHost();
}
void diancai::onOrderDisconnected()
{
qDebug() << "Order socket disconnected";
}
void diancai::onServiceBytesWritten(qint64 bytes)
{
qDebug() << "Service bytes written:" << bytes;
m_serviceSocket->disconnectFromHost();
}
void diancai::onServiceDisconnected()
{
qDebug() << "Service socket disconnected";
}
这里有用到拷贝构造函数吗