Вы бы использовали QMessageBox::question
для этого.
Пример в слоте гипотетического виджета:
#include <QApplication>
#include <QMessageBox>
#include <QDebug>
// ...
void MyWidget::someSlot() {
QMessageBox::StandardButton reply;
reply = QMessageBox::question(this, "Test", "Quit?",
QMessageBox::Yes|QMessageBox::No);
if (reply == QMessageBox::Yes) {
qDebug() << "Yes was clicked";
QApplication::quit();
} else {
qDebug() << "Yes was *not* clicked";
}
}
Должен работать на Qt 4 и 5, требуется QT += widgets
на Qt 5 и CONFIG += console
на Win32 для просмотра qDebug()
вывода.
См. StandardButton
Перечисление, чтобы получить список кнопок, которые вы можете использовать; функция возвращает нажатую кнопку. Вы можете установить кнопку по умолчанию с дополнительным аргументом (Qt « выбирает подходящее значение по умолчанию автоматически », если вы этого не сделаете или не укажете QMessageBox::NoButton
).
Вы можете использовать объект QMessage для создания окна сообщения, а затем добавить кнопки:
источник
setIcon
методическая частьQMessageBox
объекта. с одним, если эти перечисления в качестве параметров:QMessageBox::NoIcon
QMessageBox::Question
QMessageBox::Information
doc.qt.io/qt-4.8/qmessagebox.html#icon-propQT может быть таким же простым, как и Windows. Эквивалентный код
источник
В
tr
ответах отсутствует вызов перевода .Одно из самых простых решений, позволяющее в дальнейшем интернационализировать:
Обычно рекомендуется
Qt
помещать строки уровня кода вtr("Your String")
вызов.(
QMessagebox
как указано выше, работает с любымQWidget
методом)РЕДАКТИРОВАТЬ:
вы можете использовать
QMesssageBox
внеQWidget
контекста, см. ответ @ TobySpeight.Если вы даже вне
QObject
контекста, заменитеtr
наqApp->translate("context", "String")
- вам нужно#include <QApplication>
источник
QMessageBox
включает статические методы для быстрого задания таких вопросов:Если ваши потребности более сложны, чем предусмотрено статическими методами, вы должны создать новый
QMessageBox
объект и вызвать егоexec()
метод, чтобы показать его в собственном цикле событий и получить идентификатор нажатой кнопки. Например, мы могли бы сделать ответом по умолчанию «Нет»:источник
QApplication
я предлагаю использоватьqApp->translate("context", "String")
, который заменяетtr
использование внеQObject
классаЕсли вы хотите сделать это на Python, вам нужно проверить этот код на своем рабочем месте. тоже напиши вот так. мы создали всплывающее окно с помощью Python.
источник