单击时如何将messageBox连接到插槽?

时间:2019-07-01 17:23:14

标签: qt

我想创建一个消息框,询问用户是否要再次播放。当用户单击任一按钮时,它将执行任务。任务在插槽中定义。如何将按钮点击按钮连接到该插槽?

QMessageBox::StandardButton reply=QMessageBox::question(this,"GAME Over-Do you want to play again?");
connect(QMessageBox,SIGNAL(buttonClicked()),this,SLOT(box());

它显示QMessageBox是一类,并且无法将其连接到该插槽。我想连接到该插槽。

1 个答案:

答案 0 :(得分:2)

有多种使用QMessageBox的方法。您可以使用blocking static functions中的QMessageBox并检查响应,如下所示:

QMessageBox::StandardButton reply = QMessageBox::question(this,"Title", "GAME Over-Do you want to play again?");
if(reply == QMessageBox::Yes)
{
    //call your slot
    //box();
    qDebug() << " Yes clicked";
}
else
{
    //Game over
    qDebug() << "game over";
}

但这会阻止代码执行,直到用户单击消息框中的某些按钮为止。

如果您需要在不等待用户响应的情况下向前运行代码,则可以以非阻塞方式使用QMessageBox:

QMessageBox * msg = new QMessageBox(QMessageBox::Question, "Title", "GAME Over-Do you want to play again?", QMessageBox::Yes| QMessageBox::No, this);
connect(msg,SIGNAL(accepted()),this,SLOT(box()));
connect(msg,SIGNAL(rejected()),this,SLOT(gameover()));
msg->show();
qDebug() << "Not blocked";