Класс 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) | |
| virtual | ~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() |
Переопределенные защищённые функции
| virtual void | changeEvent(QEvent *event) override |
| virtual 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 предоставляет несколько стандартных кнопок (например, «ОК», «Отмена», «Сохранить»), которые вы можете использовать. Они существуют как флаги, поэтому вы можете объединять их при помощи оператора OR в конструкторе.
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 |
Нажатие на кнопку приводит к подтверждению диалога (например, «ОК»). |
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. |
QDialogButtonBox::SaveAll |
0x00001000 |
Кнопка «Сохранить всё», определенная с помощью AcceptRole. |
QDialogButtonBox::Yes |
0x00004000 |
Кнопка «Да», определенная с помощью YesRole. |
QDialogButtonBox::YesToAll |
0x00008000 |
Кнопка «Да всем», определенная с помощью YesRole. |
QDialogButtonBox::No |
0x00010000 |
Кнопка «Нет», определенная с помощью NoRole. |
QDialogButtonBox::NoToAll |
0x00020000 |
Кнопка «Нет всем», определенная с помощью NoRole. |
QDialogButtonBox::Abort |
0x00040000 |
Кнопка «Прервать», определенная с помощью RejectRole. |
QDialogButtonBox::Retry |
0x00080000 |
Кнопка «Повторить», определенная с помощью AcceptRole. |
QDialogButtonBox::Ignore |
0x00100000 |
Кнопка «Пропустить», определенная с помощью AcceptRole. |
QDialogButtonBox::NoButton |
0x00000000 |
Недействительная кнопка. |
Тип 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)
Создаёт группу кнопок с заданной ориентацией и родительским объектом, содержащую стандартные кнопки, указанные параметром buttons.
См. также orientation и addButton().
[since 5.2] QDialogButtonBox::QDialogButtonBox(QDialogButtonBox::StandardButtons buttons, QWidget *parent = nullptr)
Создаёт горизонтальную группу кнопок с заданным родительским объектом, содержащую стандартные кнопки, указанные параметром buttons.
Эта функция была добавлена в Qt 5.2.
См. также orientation и addButton().
QDialogButtonBox::QDialogButtonBox(Qt::Orientation orientation, QWidget *parent = nullptr)
Создаёт пустую группу кнопок с заданной ориентацией и родительским объектом.
См. также orientation и addButton().
QDialogButtonBox::QDialogButtonBox(QWidget *parent = nullptr)
Создаёт пустую горизонтальную группу кнопок с заданным родительским объектом.
См. также 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)
Добавляет заданную кнопку в группу кнопок с указанной ролью. Если роль недействительна, кнопка не добавляется.
Если кнопка уже добавлена, она удаляется и добавляется снова с новой ролью.
Примечание: Группа кнопок принимает владение кнопкой.
См. также removeButton() и clear().
QPushButton *QDialogButtonBox::addButton(const QString &text, QDialogButtonBox::ButtonRole role)
Создаёт кнопку с заданным текстом, добавляет её в группу кнопок для указанной роли и возвращает соответствующую кнопку. Если role недействительна, кнопка не создаётся, и возвращается ноль.
См. также removeButton() и clear().
QPushButton *QDialogButtonBox::addButton(QDialogButtonBox::StandardButton button)
Добавляет стандартную кнопку в группу кнопок, если это возможно, и возвращает кнопку. Если button недействительна, она не добавляется в группу кнопок, и возвращается ноль.
См. также removeButton() и clear().
QPushButton *QDialogButtonBox::button(QDialogButtonBox::StandardButton which) const
Возвращает кнопку QPushButton, соответствующую стандартной кнопке which, или nullptr если стандартная кнопка не существует в этой группе кнопок.
См. также standardButton(), standardButtons() и buttons().
QDialogButtonBox::ButtonRole QDialogButtonBox::buttonRole(QAbstractButton *button) const
Возвращает роль кнопки для указанной кнопки. Эта функция возвращает 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.2/qdialogbuttonbox.html