Класс QDialogButtonBox
Класс QDialogButtonBox — это виджет, который отображает кнопки в макете, соответствующем текущему стилю виджета. Подробнее...
| Заголовок: | #include <QDialogButtonBox> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Наследуется от: | QWidget |
Открытые типы
| перечисление | ButtonLayout { WinLayout, MacLayout, KdeLayout, GnomeLayout, AndroidLayout } |
| перечисление | ButtonRole { InvalidRole, AcceptRole, RejectRole, DestructiveRole, ActionRole, …, ResetRole } |
| перечисление | StandardButton { Ok, Open, Save, Cancel, Close, …, NoButton } |
| флаги | StandardButtons |
Свойства
- centerButtons : bool
- orientation : Qt::Orientation
- standardButtons : StandardButtons
Открытые функции
| QDialogButtonBox(QDialogButtonBox::StandardButtons buttons, Qt::Orientation orientation, QWidget *parent = nullptr) | |
| QDialogButtonBox(QDialogButtonBox::StandardButtons buttons, QWidget *parent = nullptr) | |
| QDialogButtonBox(Qt::Orientation orientation, QWidget *parent = nullptr) | |
| QDialogButtonBox(QWidget *parent = nullptr) | |
| виртуальный | ~QDialogButtonBox() |
| void | addButton(QAbstractButton *button, QDialogButtonBox::ButtonRole role) |
| QPushButton * | addButton(const QString &text, QDialogButtonBox::ButtonRole role) |
| QPushButton * | addButton(QDialogButtonBox::StandardButton button) |
| QPushButton * | button(QDialogButtonBox::StandardButton which) const |
| QDialogButtonBox::ButtonRole | buttonRole(QAbstractButton *button) const |
| QList<QAbstractButton *> | buttons() const |
| bool | centerButtons() const |
| void | clear() |
| Qt::Orientation | orientation() const |
| void | removeButton(QAbstractButton *button) |
| void | setCenterButtons(bool center) |
| void | setOrientation(Qt::Orientation orientation) |
| void | setStandardButtons(QDialogButtonBox::StandardButtons buttons) |
| QDialogButtonBox::StandardButton | standardButton(QAbstractButton *button) const |
| QDialogButtonBox::StandardButtons | standardButtons() const |
Сигналы
| void | accepted() |
| void | clicked(QAbstractButton *button) |
| void | helpRequested() |
| void | rejected() |
Переопределённые защищённые функции
| виртуальный void | changeEvent(QEvent *event) override |
| виртуальный bool | event(QEvent *event) override |
Подробное описание
Диалоговые окна и информационные окна обычно отображают кнопки в макете, соответствующем рекомендациям по интерфейсу для данной платформы. Как правило, разные платформы имеют разные макеты для своих диалоговых окон. QDialogButtonBox позволяет разработчику добавлять к нему кнопки и автоматически будет использовать соответствующий макет для пользовательской среды рабочего стола.
Большинство кнопок диалогового окна следуют определённым ролям. К таким ролям относятся:
- Принятие или отклонение диалогового окна.
- Запрос справки.
- Выполнение действий над самим диалоговым окном (например, сброс полей или применение изменений).
Также могут существовать альтернативные способы закрытия диалогового окна, которые могут привести к разрушительным последствиям.
Большинство диалоговых окон имеют кнопки, которые можно почти считать стандартными (например, кнопки «ОК» и «Отмена»). Иногда удобно создавать эти кнопки стандартным способом.
Существует несколько способов использования QDialogButtonBox. Один из способов — создать кнопки (или текст кнопок) самостоятельно и добавить их в блок кнопок, указав их роль.
findButton = new QPushButton(tr("&Find"));
findButton->setDefault(true);
moreButton = new QPushButton(tr("&More"));
moreButton->setCheckable(true);
moreButton->setAutoDefault(false); В качестве альтернативы, QDialogButtonBox предоставляет несколько стандартных кнопок (например, «ОК», «Отмена», «Сохранить»), которые вы можете использовать. Они существуют как флаги, поэтому вы можете объединять их побитовым ИЛИ в конструкторе.
buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok
| QDialogButtonBox::Cancel);
connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); Вы можете смешивать обычные кнопки и стандартные кнопки.
В настоящее время кнопки выстраиваются следующим образом, если блок кнопок горизонтальный:
| Блок кнопок выстроен в горизонтальном GnomeLayout | |
| Блок кнопок выстроен в горизонтальном KdeLayout | |
| Блок кнопок выстроен в горизонтальном MacLayout | |
| Блок кнопок выстроен в горизонтальном WinLayout |
Кнопки выстраиваются следующим образом, если блок кнопок вертикальный:
| GnomeLayout | KdeLayout | MacLayout | WinLayout |
Кроме того, блоки кнопок, содержащие только кнопки с ActionRole или HelpRole, могут считаться бескомпонентыми и иметь альтернативный вид в macOS:
| бескомпонентый горизонтальный MacLayout | |
| бескомпонентый вертикальный MacLayout |
При нажатии кнопки в группе кнопок диалогового окна, генерируется сигнал clicked() для нажатой кнопки. Для удобства, если кнопка имеет роль AcceptRole, RejectRole или HelpRole, соответственно, генерируются сигналы accepted(), rejected() или helpRequested().
Если требуется, чтобы определённая кнопка была кнопкой по умолчанию, необходимо вызвать метод QPushButton::setDefault() для неё. Однако, если кнопка по умолчанию не задана и для сохранения кнопки по умолчанию на разных платформах при использовании свойства QPushButton::autoDefault, первая кнопка с ролью accept становится кнопкой по умолчанию при отображении QDialogButtonBox.
См. также QMessageBox, QPushButton и QDialog.
Документация типов членов
перечисление QDialogButtonBox::ButtonLayout
Это перечисление описывает политику выравнивания кнопок, используемую при размещении кнопок в группе кнопок.
| Константа | Значение | Описание |
|---|---|---|
QDialogButtonBox::WinLayout |
0 |
Используйте политику, подходящую для приложений на Windows. |
QDialogButtonBox::MacLayout |
1 |
Используйте политику, подходящую для приложений на macOS. |
QDialogButtonBox::KdeLayout |
2 |
Используйте политику, подходящую для приложений на KDE. |
QDialogButtonBox::GnomeLayout |
3 |
Используйте политику, подходящую для приложений на GNOME. |
QDialogButtonBox::AndroidLayout |
4 |
Используйте политику, подходящую для приложений на Android. Это значение перечисления было добавлено в Qt 5.10. |
Макет кнопок задаётся текущим стилем. Однако на платформе X11 он может быть под влиянием среды рабочего стола.
перечисление QDialogButtonBox::ButtonRole
Этот перечисление описывает роли, которые могут быть использованы для описания кнопок в кнопочной панели. Комбинации этих ролей используются как флаги для описания различных аспектов их поведения.
| Константа | Значение | Описание |
|---|---|---|
QDialogButtonBox::InvalidRole |
-1 |
Кнопка недействительна. |
QDialogButtonBox::AcceptRole |
0 |
Нажатие на кнопку приводит к подтверждению диалогового окна (например, OK). |
QDialogButtonBox::RejectRole |
1 |
Нажатие на кнопку приводит к отклонению диалогового окна (например, Отмена). |
QDialogButtonBox::DestructiveRole |
2 |
Нажатие на кнопку приводит к необратимому изменению (например, при удалении изменений) и закрытию диалогового окна. |
QDialogButtonBox::ActionRole |
3 |
Нажатие на кнопку приводит к изменениям элементов внутри диалогового окна. |
QDialogButtonBox::HelpRole |
4 |
Кнопка позволяет запросить помощь. |
QDialogButtonBox::YesRole |
5 |
Кнопка типа "Да". |
QDialogButtonBox::NoRole |
6 |
Кнопка типа "Нет". |
QDialogButtonBox::ApplyRole |
8 |
Кнопка применяется текущие изменения. |
QDialogButtonBox::ResetRole |
7 |
Кнопка сбросит поля диалогового окна до значений по умолчанию. |
См. такжеStandardButton.
enum QDialogButtonBox::StandardButtonflags QDialogButtonBox::StandardButtons
Эти перечисления описывают флаги для стандартных кнопок. Каждая кнопка имеет определенную ButtonRole.
| Константа | Значение | Описание |
|---|---|---|
QDialogButtonBox::Ok |
0x00000400 |
Кнопка "ОК" определена с AcceptRole. |
QDialogButtonBox::Open |
0x00002000 |
Кнопка "Открыть" определена с AcceptRole. |
QDialogButtonBox::Save |
0x00000800 |
Кнопка "Сохранить" определена с AcceptRole. |
QDialogButtonBox::Cancel |
0x00400000 |
Кнопка "Отмена" определена с RejectRole. |
QDialogButtonBox::Close |
0x00200000 |
Кнопка "Закрыть" определена с RejectRole. |
QDialogButtonBox::Discard |
0x00800000 |
Кнопка "Отменить" или "Не сохранять", в зависимости от платформы, определена с DestructiveRole. |
QDialogButtonBox::Apply |
0x02000000 |
Кнопка "Применить" определена с ApplyRole. |
QDialogButtonBox::Reset |
0x04000000 |
Кнопка "Сброс" определена с ResetRole. |
QDialogButtonBox::RestoreDefaults |
0x08000000 |
Кнопка "Восстановить значения по умолчанию" определена с ResetRole. |
QDialogButtonBox::Help |
0x01000000 |
Кнопка "Помощь" определена с HelpRole. |
Тип StandardButtons является типом-синонимом для QFlags<StandardButton>. Он хранит комбинацию значений StandardButton, объединенных операцией ИЛИ.
См. такжеButtonRole и standardButtons.
Документация свойств
centerButtons : bool
Это свойство определяет, центрированы ли кнопки в группе кнопок.
По умолчанию это свойство равно false. Это поведение подходит для большинства типов диалогов. Заметным исключением являются диалоговые окна сообщения на большинстве платформ (например, Windows), где группа кнопок центрируется по горизонтали.
Функции доступа:
| bool | centerButtons() const |
| void | setCenterButtons(bool center) |
См. также QMessageBox.
orientation : Qt::Orientation
Это свойство определяет ориентацию группы кнопок.
По умолчанию ориентация горизонтальная (т.е. кнопки расположены рядом). Возможные ориентации — Qt::Horizontal и Qt::Vertical.
Функции доступа:
| Qt::Orientation | orientation() const |
| void | setOrientation(Qt::Orientation orientation) |
standardButtons : StandardButtons
набор стандартных кнопок в группе кнопок
Это свойство управляет тем, какие стандартные кнопки используются в группе кнопок.
Функции доступа:
| QDialogButtonBox::StandardButtons | standardButtons() const |
| void | setStandardButtons(QDialogButtonBox::StandardButtons buttons) |
См. также addButton().
Документация функций-членов
QDialogButtonBox::QDialogButtonBox(QDialogButtonBox::StandardButtons buttons, Qt::Orientation orientation, QWidget *parent = nullptr)
Создаёт группу кнопок с заданной orientation и parent, содержащую стандартные кнопки, заданные buttons.
См. также orientation и addButton().
[since 5.2] QDialogButtonBox::QDialogButtonBox(QDialogButtonBox::StandardButtons buttons, QWidget *parent = nullptr)
Создаёт горизонтальную группу кнопок с заданным parent, содержащую стандартные кнопки, заданные buttons.
Эта функция была введена в Qt 5.2.
См. также orientation и addButton().
QDialogButtonBox::QDialogButtonBox(Qt::Orientation orientation, QWidget *parent = nullptr)
Создаёт пустую группу кнопок с заданной orientation и parent.
См. также orientation и addButton().
QDialogButtonBox::QDialogButtonBox(QWidget *parent = nullptr)
Создаёт пустую горизонтальную группу кнопок с заданным parent.
См. также orientation и addButton().
[signal] void QDialogButtonBox::accepted()
Этот сигнал испускается, когда нажимается кнопка внутри группы кнопок, если она была определена с помощью AcceptRole или YesRole.
См. также rejected(), clicked() и helpRequested().
[signal] void QDialogButtonBox::clicked(QAbstractButton *button)
Этот сигнал испускается, когда нажимается кнопка внутри группы кнопок. Конкретная нажатая кнопка указана параметром button.
См. также accepted(), rejected() и helpRequested().
[signal] void QDialogButtonBox::helpRequested()
Этот сигнал испускается, когда нажимается кнопка внутри группы кнопок, если она была определена с помощью HelpRole.
См. также accepted(), rejected() и clicked().
[signal] void QDialogButtonBox::rejected()
Этот сигнал испускается, когда нажимается кнопка внутри группы кнопок, если она была определена с помощью RejectRole или NoRole.
См. также accepted(), helpRequested() и clicked().
[virtual] QDialogButtonBox::~QDialogButtonBox()
Уничтожает группу кнопок.
void QDialogButtonBox::addButton(QAbstractButton *button, QDialogButtonBox::ButtonRole role)
Добавляет заданную button в группу кнопок с заданной role. Если роль недопустима, кнопка не добавляется.
Если кнопка уже добавлена, она удаляется и добавляется снова с новой ролью.
Примечание: Группа кнопок принимает владение кнопкой.
См. также removeButton() и clear().
QPushButton *QDialogButtonBox::addButton(const QString &text, QDialogButtonBox::ButtonRole role)
Создаёт кнопку с заданным text, добавляет её в группу кнопок для заданной role и возвращает соответствующую кнопку. Если role недопустима, кнопка не создаётся, и возвращается ноль.
См. также removeButton() и clear().
QPushButton *QDialogButtonBox::addButton(QDialogButtonBox::StandardButton button)
Добавляет стандартную button в группу кнопок, если это возможно, и возвращает соответствующую кнопку. Если button недопустима, она не добавляется, и возвращается ноль.
См. также removeButton() и clear().
QPushButton *QDialogButtonBox::button(QDialogButtonBox::StandardButton which) const
Возвращает кнопку QPushButton, соответствующую стандартной кнопке which, или nullptr если стандартная кнопка не существует в этой группе кнопок.
См. также standardButton(), standardButtons() и buttons().
QDialogButtonBox::ButtonRole QDialogButtonBox::buttonRole(QAbstractButton *button) const
Возвращает роль кнопки для указанной button. Эта функция возвращает InvalidRole, если button nullptr или не была добавлена в группу кнопок.
См. также buttons() и addButton().
QList<QAbstractButton *> QDialogButtonBox::buttons() const
Возвращает список всех кнопок, которые были добавлены в группу кнопок.
См. также buttonRole(), addButton() и removeButton().
[override virtual protected] void QDialogButtonBox::changeEvent(QEvent *event)
Переопределяет: QWidget::changeEvent(QEvent *event).
void QDialogButtonBox::clear()
Очищает группу кнопок, удаляя все кнопки в ней.
См. также removeButton() и addButton().
[override virtual protected] bool QDialogButtonBox::event(QEvent *event)
Переопределяет: QWidget::event(QEvent *event).
void QDialogButtonBox::removeButton(QAbstractButton *button)
Удаляет button из группы кнопок без удаления его самого и устанавливает его родителя в нуль.
См. также clear(), buttons(), и addButton().
QDialogButtonBox::StandardButton QDialogButtonBox::standardButton(QAbstractButton *button) const
Возвращает значение перечисления стандартной кнопки, соответствующей данной кнопке button, или NoButton, если данная кнопка button не является стандартной.
См. также button(), buttons(), и standardButtons().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qdialogbuttonbox.html