Класс QDialogButtonBox
Класс QDialogButtonBox — это виджет, который отображает кнопки в макете, подходящем для текущего стиля виджета. Подробнее...
| Заголовок: | #include <QDialogButtonBox> |
| qmake: | QT += widgets |
| С момента: | Qt 4.2 |
| Наследует: | QWidget |
Типы
| перечисление | ButtonLayout { WinLayout, MacLayout, KdeLayout, GnomeLayout } |
| перечисление | ButtonRole { InvalidRole, AcceptRole, RejectRole, DestructiveRole, ..., ResetRole } |
| перечисление | StandardButton { Ok, Open, Save, Cancel, ..., NoButton } |
| флаги | StandardButtons |
Свойства
- centerButtons : bool
- orientation : Qt::Orientation
- standardButtons : StandardButtons
Открытые функции
| QDialogButtonBox(QWidget *parent = Q_NULLPTR) | |
| QDialogButtonBox(Qt::Orientation orientation, QWidget *parent = Q_NULLPTR) | |
| QDialogButtonBox(StandardButtons buttons, QWidget *parent = Q_NULLPTR) | |
| QDialogButtonBox(StandardButtons buttons, Qt::Orientation orientation, QWidget *parent = Q_NULLPTR) | |
| ~QDialogButtonBox() | |
| void | addButton(QAbstractButton *button, ButtonRole role) |
| QPushButton * | addButton(const QString &text, ButtonRole role) |
| QPushButton * | addButton(StandardButton button) |
| QPushButton * | button(StandardButton which) const |
| 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(StandardButtons buttons) |
| StandardButton | standardButton(QAbstractButton *button) const |
| StandardButtons | standardButtons() const |
- 214 открытых функций унаследовано от QWidget
- 32 открытых функции унаследовано от QObject
- 14 открытых функций унаследовано от QPaintDevice
Сигналы
| void | accepted() |
| void | clicked(QAbstractButton *button) |
| void | helpRequested() |
| void | rejected() |
Переопределенные защищенные функции
| virtual void | changeEvent(QEvent *event) |
| virtual bool | event(QEvent *event) |
- 35 защищенных функций унаследовано от QWidget
- 9 защищенных функций унаследовано от QObject
- 1 защищенная функция унаследовано от QPaintDevice
Дополнительные унаследованные члены
- 19 открытых слотов унаследовано от QWidget
- 1 открытый слот унаследовано от QObject
- 5 статических открытых членов унаследовано от QWidget
- 11 статических открытых членов унаследовано от QObject
- 35 защищенных функций унаследовано от QWidget
- 9 защищенных функций унаследовано от QObject
- 1 защищенная функция унаследовано от QPaintDevice
- 1 защищенный слот унаследовано от QWidget
Подробное описание
Класс QDialogButtonBox — это виджет, который отображает кнопки в макете, подходящем для текущего стиля виджета.
Диалоговые окна и информационные окна обычно отображают кнопки в макете, соответствующем рекомендациям по интерфейсу для данной платформы. Разные платформы неизменно имеют разные макеты для своих диалоговых окон. 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, первая кнопка типа push с ролью accept становится кнопкой по умолчанию при отображении QDialogButtonBox.
См. также QMessageBox, QPushButton и QDialog.
Документация по типам членов
перечисление QDialogButtonBox::ButtonLayout
Это перечисление описывает политику выравнивания, используемую при размещении кнопок в группе кнопок.
| Постоянная | Значение | Описание |
|---|---|---|
QDialogButtonBox::WinLayout |
0 |
Используйте политику, подходящую для приложений на Windows. |
QDialogButtonBox::MacLayout |
1 |
Используйте политику, подходящую для приложений на macOS. |
QDialogButtonBox::KdeLayout |
2 |
Используйте политику, подходящую для приложений на KDE. |
QDialogButtonBox::GnomeLayout |
3 |
Используйте политику, подходящую для приложений на GNOME. |
Макет кнопок задаётся текущей стилистикой. Однако на платформе 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.
перечисление QDialogButtonBox::StandardButtonфлаги QDialogButtonBox::StandardButtons
Эти перечисления описывают флаги для стандартных кнопок. Каждая кнопка имеет определённую ButtonRole.
END_OF_DOCUMENT_MARKER| Константа | Значение | Описание |
|---|---|---|
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
набор стандартных кнопок в группе кнопок
Это свойство управляет тем, какие стандартные кнопки используются в группе кнопок.
Функции доступа:
| StandardButtons | standardButtons() const |
| void | setStandardButtons(StandardButtons buttons) |
См. также addButton().
Документация по функциям-членам
QDialogButtonBox::QDialogButtonBox(QWidget *parent = Q_NULLPTR)
Конструирует пустую горизонтальную группу кнопок с заданным parent.
См. также orientation и addButton().
QDialogButtonBox::QDialogButtonBox(Qt::Orientation orientation, QWidget *parent = Q_NULLPTR)
Конструирует пустую группу кнопок с заданной orientation и parent.
См. также orientation и addButton().
QDialogButtonBox::QDialogButtonBox(StandardButtons buttons, QWidget *parent = Q_NULLPTR)
Конструирует горизонтальную группу кнопок с заданным parent, содержащую стандартные кнопки, указанные в buttons.
Эта функция была добавлена в Qt 5.2.
См. также orientation и addButton().
QDialogButtonBox::QDialogButtonBox(StandardButtons buttons, Qt::Orientation orientation, QWidget *parent = Q_NULLPTR)
Конструирует группу кнопок с заданной orientation и parent, содержащую стандартные кнопки, указанные в buttons.
См. также orientation и addButton().
QDialogButtonBox::~QDialogButtonBox()
Уничтожает группу кнопок.
[signal] void QDialogButtonBox::accepted()
Этот сигнал испускается, когда нажимается кнопка внутри группы кнопок, при условии, что она была определена с помощью AcceptRole или YesRole.
См. также rejected(), clicked() и helpRequested().
void QDialogButtonBox::addButton(QAbstractButton *button, ButtonRole role)
Добавляет указанную button в группу кнопок с указанным role. Если роль недействительна, кнопка не добавляется.
Если кнопка уже добавлена, она удаляется и добавляется снова с новой ролью.
Примечание: Группа кнопок берёт на себя владение кнопкой.
См. также removeButton() и clear().
QPushButton *QDialogButtonBox::addButton(const QString &text, ButtonRole role)
Создаёт кнопку «Нажатия» с заданным текстом text, добавляет её в набор кнопок для указанного role и возвращает соответствующую кнопку «Нажатия». Если role некорректен, кнопка не создаётся, и возвращается ноль.
См. также removeButton() и clear().
QPushButton *QDialogButtonBox::addButton(StandardButton button)
Добавляет стандартную кнопку button в набор кнопок, если это возможно, и возвращает кнопку «Нажатия». Если button некорректна, она не добавляется в набор кнопок, и возвращается ноль.
См. также removeButton() и clear().
QPushButton *QDialogButtonBox::button(StandardButton which) const
Возвращает кнопку QPushButton, соответствующую стандартной кнопке which, или 0, если стандартная кнопка отсутствует в этом наборе кнопок.
См. также standardButton(), standardButtons() и buttons().
ButtonRole QDialogButtonBox::buttonRole(QAbstractButton *button) const
Возвращает роль кнопки для указанной кнопки button. Эта функция возвращает InvalidRole, если button равно 0 или не была добавлена в набор кнопок.
См. также buttons() и addButton().
QList<QAbstractButton *> QDialogButtonBox::buttons() const
Возвращает список всех кнопок, которые были добавлены в набор кнопок.
См. также buttonRole(), addButton() и removeButton().
[virtual protected] void QDialogButtonBox::changeEvent(QEvent *event)
Переопределено из QWidget::changeEvent().
void QDialogButtonBox::clear()
Очищает набор кнопок, удаляя все кнопки в нём.
См. также removeButton() и addButton().
[signal] void QDialogButtonBox::clicked(QAbstractButton *button)
Этот сигнал испускается, когда нажимается кнопка внутри набора кнопок. Конкретная нажатая кнопка указана параметром button.
См. также accepted(), rejected() и helpRequested().
[virtual protected] bool QDialogButtonBox::event(QEvent *event)
Переопределено из QObject::event().
[signal] void QDialogButtonBox::helpRequested()
Этот сигнал испускается, когда нажимается кнопка внутри набора кнопок, если она была определена с помощью HelpRole.
См. также accepted(), rejected() и clicked().
[signal] void QDialogButtonBox::rejected()
Этот сигнал испускается, когда нажимается кнопка внутри набора кнопок, если она была определена с помощью RejectRole или NoRole.
См. также accepted(), helpRequested() и clicked().
void QDialogButtonBox::removeButton(QAbstractButton *button)
Удаляет button из набора кнопок без её удаления и устанавливает её родителя в ноль.
См. также clear(), buttons() и addButton().
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-5.9/qdialogbuttonbox.html