Класс QPushButton
Виджет QPushButton предоставляет командную кнопку. Подробнее...
| Заголовок: | #include <QPushButton> |
| qmake: | QT += widgets |
| Наследует: | QAbstractButton |
| Наследуется от: |
Свойства
- autoDefault : bool
- default : bool
- flat : bool
- 11 свойств унаследовано от QAbstractButton
- 59 свойств унаследовано от QWidget
- 1 свойство унаследовано от QObject
Открытые функции
| QPushButton(QWidget *parent = Q_NULLPTR) | |
| QPushButton(const QString &text, QWidget *parent = Q_NULLPTR) | |
| QPushButton(const QIcon &icon, const QString &text, QWidget *parent = Q_NULLPTR) | |
| ~QPushButton() | |
| bool | autoDefault() const |
| bool | являетсяПоУмолчанию() const |
| bool | isFlat() const |
| QMenu * | menu() const |
| void | setAutoDefault(bool) |
| void | setDefault(bool) |
| void | setFlat(bool) |
| void | setMenu(QMenu *menu) |
Переопределённые открытые функции
| virtual QSize | minimumSizeHint() const |
| virtual QSize | sizeHint() const |
- 21 открытая функция унаследована от QAbstractButton
- 214 открытых функций унаследовано от QWidget
- 32 открытых функций унаследовано от QObject
- 14 открытых функций унаследовано от QPaintDevice
Открытые слоты
| void | showMenu() |
- 5 открытых слотов унаследовано от QAbstractButton
- 19 открытых слотов унаследовано от QWidget
- 1 открытый слот унаследовано от QObject
Защищённые функции
| void | initStyleOption(QStyleOptionButton *option) const |
Переопределённые защищённые функции
| virtual bool | event(QEvent *e) |
| virtual void | focusInEvent(QFocusEvent *e) |
| virtual void | focusOutEvent(QFocusEvent *e) |
| virtual void | keyPressEvent(QKeyEvent *e) |
| virtual void | paintEvent(QPaintEvent *) |
- 14 защищённых функций унаследовано от QAbstractButton
- 35 защищённых функций унаследовано от QWidget
- 9 защищённых функций унаследовано от QObject
- 1 защищённая функция унаследована от QPaintDevice
Дополнительные унаследованные члены
- 4 сигнала унаследовано от QAbstractButton
- 3 сигнала унаследовано от QWidget
- 2 сигнала унаследовано от QObject
- 5 статических открытых членов унаследовано от QWidget
- 11 статических открытых членов унаследовано от QObject
- 1 защищённый слот унаследовано от QWidget
Подробное описание
Виджет QPushButton предоставляет командную кнопку.
[Отсутствует изображение windows-pushbutton.jpg]
Кнопка, или командная кнопка, является, пожалуй, наиболее часто используемым виджетом в любом графическом пользовательском интерфейсе. Нажмите (щелкните) кнопку, чтобы дать компьютеру команду выполнить какое-либо действие или ответить на вопрос. Типичные кнопки — OK, Применить, Отмена, Закрыть, Да, Нет и Помощь.
Командная кнопка имеет прямоугольную форму и обычно отображает текстовую метку, описывающую её действие. Кнопка может иметь сочетание клавиш, указанное префиксом амперсанда перед предпочтительным символом в тексте. Например:
QPushButton *button = new QPushButton("&Download", this); В этом примере сочетание клавиш — Alt+D. Подробную информацию см. в документации по QShortcut (чтобы отобразить фактический амперсанд, используйте '&&').
Кнопки отображают текстовую метку и, необязательно, небольшой значок. Их можно задать с помощью конструкторов и изменить позже с помощью setText() и setIcon(). Если кнопка отключена, внешний вид текста и значка будет изменён в соответствии со стилем графического интерфейса пользователя, чтобы кнопка выглядела "отключённой".
Кнопка подаёт сигнал clicked() при активации с помощью мыши, клавиши пробела или сочетания клавиш. Подключитесь к этому сигналу, чтобы выполнить действие кнопки. Кнопки также подают менее часто используемые сигналы, например, pressed() и released().
Командные кнопки в диалоговых окнах по умолчанию являются кнопками по умолчанию, то есть они автоматически становятся кнопками по умолчанию при получении фокуса ввода с клавиатуры. Кнопка по умолчанию — это кнопка, которая активируется, когда пользователь нажимает клавишу Ввод или Возврат в диалоговом окне. Это можно изменить с помощью setAutoDefault(). Обратите внимание, что кнопки по умолчанию занимают немного дополнительного места, что необходимо для отображения индикатора кнопки по умолчанию. Если вы не хотите этого дополнительного пространства вокруг кнопок, вызовите setAutoDefault(false).
Поскольку кнопки являются центральным элементом, за последнее десятилетие они эволюционировали, включали множество различных вариаций. Руководство Microsoft по стилям сейчас показывает около десяти различных состояний кнопок Windows, и текст подразумевает, что их гораздо больше, если рассматривать все комбинации функций.
Наиболее важные режимы или состояния:
- Доступность или недоступность (серый цвет, отключено).
- Стандартная кнопка, переключаемая кнопка или кнопка меню.
- Включено или выключено (только для переключаемых кнопок).
- По умолчанию или обычная. Кнопка по умолчанию в диалоговом окне обычно может быть "нажата" с помощью клавиши Ввод или Возврат.
- Автоповтор или нет.
- Нажата или нет.
Как правило, используйте кнопку, когда приложение или диалоговое окно выполняет действие при нажатии на неё (например, Применить, Отмена, Закрыть и Помощь) и когда виджет должен иметь широкую прямоугольную форму с текстовой меткой. Небольшие, как правило, квадратные кнопки, которые изменяют состояние окна, а не выполняют действие (например, кнопки в правом верхнем углу QFileDialog), не являются командными кнопками, а кнопками инструментов. Qt предоставляет специальный класс (QToolButton) для этих кнопок.
Если вам нужна переключаемая функциональность (см. setCheckable()) или кнопка, которая автоматически повторяет сигнал активации при нажатии, как стрелки в полосе прокрутки (см. setAutoRepeat()), командная кнопка, вероятно, не то, что вам нужно. В случае сомнений используйте кнопку инструментов.
END_OF_DOCUMENT_MARKERПримечание: В macOS, когда ширина кнопки становится меньше 50, или высота меньше 30, углы кнопки изменяются с закругленных на квадратные. Используйте функцию setMinimumSize() для предотвращения этого поведения.
Разновидностью командной кнопки является кнопка меню. Они предоставляют не только одну команду, но и несколько, так как при нажатии они отображают меню с вариантами. Используйте метод setMenu() для ассоциирования всплывающего меню с кнопкой.
Другие классы кнопок — это кнопки выбора (см. QRadioButton) и флажки (см. QCheckBox).
В Qt базовый класс QAbstractButton предоставляет большинство режимов и другой API, а QPushButton предоставляет логику графического интерфейса. Смотрите QAbstractButton для получения дополнительной информации об API.
См. также QToolButton, QRadioButton, QCheckBox и Руководство по проектированию графического интерфейса пользователя: Кнопка.
Документация по свойствам
autoDefault : bool
Это свойство содержит информацию о том, является ли кнопка кнопкой по умолчанию.
Если это свойство установлено в значение true, то кнопка является кнопкой по умолчанию.
В некоторых стилях графического интерфейса кнопка по умолчанию отображается с дополнительной рамкой вокруг неё, до 3 пикселей или больше. Qt автоматически сохраняет это пространство вокруг кнопок по умолчанию, т.е. кнопки по умолчанию могут иметь немного больший размер.
По умолчанию это свойство равно true для кнопок, у которых родительский элемент — QDialog; в противном случае оно по умолчанию равно false.
См. свойство default для получения подробностей о взаимодействии свойств default и autoDefault.
Функции доступа:
| bool | autoDefault() const |
| void | setAutoDefault(bool) |
default : bool
Это свойство содержит информацию о том, является ли кнопка кнопкой по умолчанию.
Кнопки по умолчанию и автоматические кнопки по умолчанию определяют, что происходит, когда пользователь нажимает Enter в диалоговом окне.
Кнопка с этим свойством, установленным в true (т.е., кнопка по умолчанию диалогового окна), будет автоматически нажата при нажатии пользователем Enter, за одним исключением: если кнопка по умолчанию в данный момент имеет фокус, нажимается кнопка autoDefault. Если в диалоговом окне есть кнопки autoDefault, но нет кнопки по умолчанию, нажатие Enter нажмёт либо кнопку autoDefault, имеющую фокус, либо, если ни одна кнопка не имеет фокуса, следующую кнопку autoDefault в цепочке фокуса.
В диалоговом окне только одна кнопка может быть кнопкой по умолчанию. Затем эта кнопка отображается с дополнительной рамкой (в зависимости от стиля графического интерфейса).
Поведение кнопки по умолчанию доступно только в диалоговых окнах. Кнопки всегда можно нажимать с клавиатуры, нажав клавишу пробела, когда кнопка имеет фокус.
Если свойство default установлено в false для текущей кнопки по умолчанию, пока диалоговое окно открыто, следующего раза, когда кнопка в диалоговом окне получит фокус, ей автоматически будет назначена новая кнопка по умолчанию.
Значение по умолчанию для этого свойства — false.
Функции доступа:
| bool | isDefault() const |
| void | setDefault(bool) |
flat : bool
Это свойство указывает, является ли граница кнопки поднятой.
По умолчанию это свойство равно false. Если это свойство установлено, большинство стилей не будут рисовать фон кнопки, пока кнопка не нажата. setAutoFillBackground() можно использовать для обеспечения заполнения фона с помощью кисти QPalette::Button.
Функции доступа:
| bool | isFlat() const |
| void | setFlat(bool) |
Документация по функциям-членам
QPushButton::QPushButton(QWidget *parent = Q_NULLPTR)
Конструирует кнопку без текста и с указанным parent.
QPushButton::QPushButton(const QString &text, QWidget *parent = Q_NULLPTR)
Конструирует кнопку с родительским элементом parent и текстом text.
QPushButton::QPushButton(const QIcon &icon, const QString &text, QWidget *parent = Q_NULLPTR)
Конструирует кнопку с icon и text и parent.
Обратите внимание, что вы также можете передать объект QPixmap в качестве иконки (благодаря неявной конвертации типов, предоставляемой C++).
QPushButton::~QPushButton()
Удаляет кнопку.
[virtual protected] bool QPushButton::event(QEvent *e)
Переопределяет QObject::event().
[virtual protected] void QPushButton::focusInEvent(QFocusEvent *e)
Переопределяет QWidget::focusInEvent().
[virtual protected] void QPushButton::focusOutEvent(QFocusEvent *e)
Переопределяет QWidget::focusOutEvent().
[protected] void QPushButton::initStyleOption(QStyleOptionButton *option) const
Инициализирует option значениями из этой QPushButton. Этот метод полезен для подклассов, когда им нужен QStyleOptionButton, но они не хотят заполнять всю информацию сами.
См. также QStyleOption::initFrom().
[virtual protected] void QPushButton::keyPressEvent(QKeyEvent *e)
Переопределяет QWidget::keyPressEvent().
QMenu *QPushButton::menu() const
Возвращает связанное всплывающее меню кнопки или 0, если всплывающее меню не задано.
См. также setMenu().
[virtual] QSize QPushButton::minimumSizeHint() const
Переопределяет QWidget::minimumSizeHint().
[virtual protected] void QPushButton::paintEvent(QPaintEvent *)
Переопределяет QWidget::paintEvent().
void QPushButton::setMenu(QMenu *menu)
Связывает всплывающее меню menu с этой кнопкой. Это превращает кнопку в кнопку меню, которая в некоторых стилях отобразит небольшой треугольник справа от текста кнопки.
Владение меню не передаётся кнопке.
Кнопка с всплывающими меню, показанными в стиле виджета Fusion.
См. также menu().
[slot] void QPushButton::showMenu()
Отображает (всплывает) связанное всплывающее меню. Если такое меню отсутствует, функция ничего не делает. Функция не возвращает значения до тех пор, пока пользователь не закроет всплывающее меню.
[virtual] QSize QPushButton::sizeHint() const
Переопределяет QWidget::sizeHint().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qpushbutton.html