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