Класс 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, ..., NRoles } |
| перечисление | StandardButton { Ok, Open, Save, Cancel, ..., 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 | |
| Окно кнопок выровнено по горизонтали в макете KdeLayout | |
| Окно кнопок выровнено по горизонтали в макете MacLayout | |
| Окно кнопок выровнено по горизонтали в макете WinLayout |
Кнопки размещаются следующим образом, если окно кнопок расположено вертикально:
| GnomeLayout | KdeLayout | MacLayout | WinLayout |
Кроме того, окна кнопок, содержащие только кнопки с ActionRole или HelpRole, могут считаться безактивационными и иметь альтернативный вид на macOS:
| безактивационное горизонтальное расположение в макете MacLayout | |
| безактивационное вертикальное расположение в макете MacLayout |
При нажатии кнопки в поле кнопок, сигнал clicked() генерируется для фактической нажатой кнопки. Для удобства, если кнопка имеет роль AcceptRole, RejectRole или HelpRole, соответственно генерируются сигналы accepted(), rejected() или helpRequested().
Если вы хотите, чтобы определённая кнопка была кнопкой по умолчанию, необходимо вызвать QPushButton::setDefault() для неё. Однако, если кнопка по умолчанию не установлена и для сохранения настройки кнопки по умолчанию на разных платформах при использовании свойства QPushButton::autoDefault, первой кнопке с ролью принятия будет назначена роль кнопки по умолчанию при отображении 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. |
Тип 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().
Документация функций членов
Это перечисление описывает роли, которые могут быть использованы для описания кнопок в поле кнопок. Комбинации этих ролей используются как флаги для описания различных аспектов их поведения.
END_OF_DOCUMENT_MARKER| Константа | Описание |
|---|---|
InvalidRole |
Кнопка недействительна. |
AcceptRole |
Нажатие на кнопку приводит к принятию диалога (например, «ОК»). |
RejectRole |
Нажатие на кнопку приводит к отклонению диалога (например, «Отмена»). |
DestructiveRole |
Нажатие на кнопку приводит к выполнению разрушающего изменения (например, при отбрасывании изменений) и закрытию диалога. |
ActionRole |
Нажатие на кнопку приводит к изменениям элементов внутри диалога. |
HelpRole |
Нажатие на кнопку позволяет запросить помощь. |
YesRole |
Кнопка похожа на кнопку «Да». |
NoRole |
Кнопка похожа на кнопку «Нет». |
ApplyRole |
Кнопка применяет текущие изменения. |
ResetRole |
Кнопка сбрасывает поля диалога до значений по умолчанию. |
См. также StandardButton.
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. Если role недействителен, кнопка не добавляется.
Если кнопка уже добавлена, она удаляется и добавляется заново с новым 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.13/qdialogbuttonbox.html