Spec-Zone.ru › Qt 5.11

Класс 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
  • 59 свойств унаследовано от QWidget
  • 1 свойство унаследовано от QObject

Функции публичного доступа

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()
  • 3 сигнала унаследовано от QWidget
  • 2 сигнала унаследовано от QObject

Переопределённые защищённые функции

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 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, первая кнопка 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

Spec-Zone.ru

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