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