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