我正在尝试通过在lambda函数中调用其QMessageBox
函数来显示show
,如下所示:
connect(ui->graphButton, &QAbstractButton::clicked, [](void){
QMessageBox message;
message.setText(tr("Graphing button clicked"));
message.show();
});
但是,点击graphButton
后,QMessageBox
窗口只会在消失前暂时显示。我该如何解决这个问题?
答案 0 :(得分:3)
message.exec();
执行它。
完整代码:
connect(ui->graphButton, &QAbstractButton::clicked, [](void){
QMessageBox message;
message.setText(tr("Graphing button clicked"));
message.exec();
});
show
仅设置窗口小部件的可见性状态:http://doc.qt.io/qt-4.8/qwidget.html#show http://doc.qt.io/qt-4.8/qwidget.html#visible-prop
exec
具有所需的行为http://doc.qt.io/qt-5/qmessagebox.html#exec
您无需使用show
,因为它是默认的可见性。禁用窗口小部件的可见性时再次启用它时使用它。
答案 1 :(得分:-1)
使用QMessageBox.setModal将消息框设置为" Modal"模式(即,它阻止执行直到它完成工作),然后使用"打开"显示消息框的方法。
connect(ui->graphButton, &QAbstractButton::clicked, [](void){
QMessageBox message;
message.setText(tr("Graphing button clicked"));
message.setModal(true);
message.open( ... );
});