#include "menu.h" #include "ui_menu.h" #include "pay.h" #include "QMessageBox" static int num; menu::menu(QWidget *parent) : QMainWindow(parent), ui(new Ui::menu) { ui->setupUi(this); } menu::~menu() { delete ui; } void menu::on_pushButton_clicked() { // pay * L = new pay(this); // L->show(); // this->hide(); } void menu::on_pushButton_3_clicked() { num++; QString score; score.setNum(num); ui->label_5->setText(score); } void menu::on_pushButton_2_clicked()//购物车 { QMessageBox box; box.setText("已点"+QString::number(ui->spinBox->value())+"份<br>"); box.setStandardButtons(QMessageBox::Ok); box.setModal(true); box.show(); box.setModal(false); box.exec(); }看看这段代码有什么问题
时间: 2024-01-24 13:05:43 浏览: 97
本科毕设项目:C++语言,基于Qt Qwidget的学生管理系统.zip
这段代码的问题在于购物车按钮的 `on_pushButton_2_clicked()` 函数中,使用了 `QMessageBox` 来显示已选数量,但是使用了 `setModal(false)` 来设置为非模态对话框,导致消息框显示后无法阻塞其他操作。建议将代码修改为如下形式:
```cpp
void menu::on_pushButton_2_clicked() {
int numSelected = ui->spinBox->value(); // 获取当前选购数量
QString message = QString("已选%1份").arg(numSelected); // 构造提示信息
// 使用信息框弹出提示,并设置为模态对话框
QMessageBox messageBox(QMessageBox::Information, "购物车", message, QMessageBox::Ok, this);
messageBox.setModal(true);
messageBox.exec();
}
```
这样修改后,当用户点击购物车按钮时,会弹出一个信息框,显示已选数量,并且该信息框为模态对话框,能够阻塞用户的其他操作,直到用户点击 Ok 按钮。
阅读全文