Как подключить MessageBox при щелчке к слоту? - PullRequest
0 голосов
/ 01 июля 2019

Я хочу создать окно сообщения с вопросом, хочет ли пользователь играть снова или нет. Когда пользователь нажимает любую кнопку, он выполняет задачу. Задача определяется в слоте. Как я могу подключить нажатие кнопки в этот слот ??

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

показывает, что QMessageBox является классом, и не может подключить его к этому слоту. Я хочу подключиться к этому слоту.

1 Ответ

2 голосов
/ 02 июля 2019

Существуют различные способы использования QMessageBox .Вы можете использовать блокирование статических функций из 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";
}

, но это будет блокировать выполнение вашего кода, пока пользователь не нажмет какую-либо кнопку в сообщенииbox.

Если вам нужно, чтобы ваш код выполнялся без ожидания ответа пользователя, вы можете использовать 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";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...