QDialog с кнопками «ОК» и «Отмена»

Мне нужен Qt Dialog со стандартными кнопками "ОК" и "Отмена", размещенными в правой части макета. Мне нужно наследовать от него и добавить в его макет другие виджеты. Я могу реализовать это сам, но может быть есть что-то стандартное, в таком случае я предпочитаю использовать это, так как это будет более портативно.

QMessageBox показывает сообщение, мне нужно что-то более общее, только QDialog и стандартные кнопки, или, может быть, у QDialog есть опция, которая их активирует.


person Ashot    schedule 19.06.2013    source источник
comment
QMessageBox — это QDialog с уже имеющимися кнопками OK и Cancel. Однако я никогда не пытался создать подкласс. Это может указать вам правильное направление.   -  person Tyler Jandreau    schedule 19.06.2013
comment
QMessageBox показывает сообщение, мне нужно что-то более общее, только QDialog и стандартные кнопки, или, может быть, у QDialog есть опция, которая их активирует   -  person Ashot    schedule 19.06.2013


Ответы (3)


Подкласс QDialog и используйте QDialogButtonBox для стандартных кнопок (документы).

person cmannett85    schedule 19.06.2013

Если вы используете QT Designer, на сайте Learnpyqt.com есть этот хороший учебник в котором они описывают, как создать QDialog с несколькими полями ввода. QT Designer можно загрузить, как описано здесь в stackoverflow в комментарии.

person subjord    schedule 22.04.2021

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

прочитайте документ: https://doc.qt.io/qt-5/qmessagebox.html

если у вас есть

Header: #include <QMessageBox>
qmake:  QT += widgets

затем выполните:

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();
person ΦXocę 웃 Пepeúpa ツ    schedule 16.08.2019