Вы можете просто прочитать QMessageBox ссылка .
Я копирую образец кода из него:
QMessageBox msgBox;
msgBox.setText("The document has been modified.");
msgBox.setInformativeText("Do you want to save your changes?");
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Save);
int ret = msgBox.exec();
switch (ret) {
case QMessageBox::Save:
// Save was clicked
break;
case QMessageBox::Discard:
// Don't Save was clicked
break;
case QMessageBox::Cancel:
// Cancel was clicked
break;
default:
// should never be reached
break;
}
Этот код создает окно сообщения с тремя кнопками(Сохранить, Отменить, Отменить).Кнопка «Сохранить» сфокусирована.
Вы можете комбинировать значения из Стандартные кнопки с помощью побитового оператора ИЛИ в функции setStandardButtons.
Если вам нужны некоторые параметры, известные только во время выполнения, я могу предложитьэто возможное решение.
QMessageBox msgBox;
//set common message box parameters. (informative text, etc)
//iterate through possible options. For each possible option:
{
QPushButton *button = msgBox.addButton(myQStringOption, QMessageBox::AcceptRole);
connect(button, SIGNAL(clicked()), /* response object */, SLOT(/*response slot*/));
}
msgBox.exec();
Я не уверен, что это самое элегантное решение, но оно должно работать.
Если вы не хотите использовать сигналы и слоты, вы можете использовать clickedButton () метод определения, какая кнопка была нажата.
msgBox.exec();
if ((msgBox.clickedButton())->text() == myQStringOption){
//doStuff
}