Spec-Zone.ru › Qt 5.14

Класс QDialogButtonBox

Класс QDialogButtonBox — это виджет, который представляет кнопки в макете, подходящем для текущего стиля виджета. Подробнее...

Заголовок: #include <QDialogButtonBox>
qmake: QT += widgets
С момента: Qt 4.2
Наследует: QWidget

Этот класс был представлен в Qt 4.2.

  • Список всех членов, включая унаследованные

Общественные типы

Перечисление 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 Horizontal Панель кнопок, выстроенная в горизонтальном GnomeLayout
KdeLayout Horizontal Панель кнопок, выстроенная в горизонтальном KdeLayout
MacLayout Horizontal Панель кнопок, выстроенная в горизонтальном MacLayout
WinLayout Horizontal Панель кнопок, выстроенная в горизонтальном WinLayout

Кнопки выстраиваются следующим образом, если панель кнопок вертикальная:

GnomeLayout KdeLayout MacLayout WinLayout
GnomeLayout Vertical KdeLayout Vertical MacLayout Vertical WinLayout Vertical

Кроме того, панели кнопок, содержащие только кнопки с ActionRole или HelpRole, могут считаться бескомпонентыми и иметь альтернативный вид на macOS:

бескомпоненная горизонтальная MacLayout Screenshot of modeless horizontal MacLayout
бескомпонентная вертикальная MacLayout Screenshot of modeless vertical 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 GnomeLayout + 2 Используйте политику, подходящую для приложений на 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().

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 равна 0 или не была добавлена в группу кнопок.

См. также 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-5.14/qdialogbuttonbox.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API