我想创建一个消息框,询问用户是否要再次播放。当用户单击任一按钮时,它将执行任务。任务在插槽中定义。如何将按钮点击按钮连接到该插槽?
QMessageBox::StandardButton reply=QMessageBox::question(this,"GAME Over-Do you want to play again?");
connect(QMessageBox,SIGNAL(buttonClicked()),this,SLOT(box());
它显示QMessageBox
是一类,并且无法将其连接到该插槽。我想连接到该插槽。
答案 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";