Класс QDialogButtonBox
Класс QDialogButtonBox — это виджет, который отображает кнопки в макете, соответствующем текущему стилю виджета. Подробнее...
| Заголовок: | #include <QDialogButtonBox> |
| qmake: | QT += widgets |
| С момента: | Qt 4.2 |
| Наследует: | QWidget |
Типы публичного доступа
| перечисление | 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
Функции публичного доступа
| 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 функций публичного доступа унаследовано от QWidget
- 34 функции публичного доступа унаследовано от QObject
- 14 функций публичного доступа унаследовано от QPaintDevice
Сигналы
| void | accepted() |
| void | clicked(QAbstractButton *button) |
| void | helpRequested() |
| void | rejected() |
Переопределённые защищённые функции
| virtual void | changeEvent(QEvent *event) override |
| virtual bool | event(QEvent *event) override |
- 35 защищённых функций унаследовано от QWidget
- 9 защищённых функций унаследовано от QObject
- 1 защищённая функция унаследовано от QPaintDevice
Дополнительные наследуемые члены
- 19 публичных слотов унаследовано от QWidget
- 1 публичный слот унаследовано от QObject
- 1 публичная переменная унаследовано от QObject
- 5 статических публичных членов унаследовано от QWidget
- 10 статических публичных членов унаследовано от QObject
- 35 защищённых функций унаследовано от QWidget
- 9 защищённых функций унаследовано от QObject
- 1 защищённая функция унаследовано от QPaintDevice
- 1 защищённый слот унаследовано от QWidget
- 2 защищённых переменных унаследовано от QObject
- 1 защищённый тип унаследовано от QPaintDevice
Подробное описание
Класс 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/archives/qt-5.11/qdialogbuttonbox.html