Spec-Zone.ru › Qt

Класс QPushButton

Виджет QPushButton предоставляет командную кнопку. Подробнее...

Заголовок: #include <QPushButton>
CMake: find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Наследуется от: QAbstractButton
Наследует:

QCommandLinkButton

  • Список всех членов, включая унаследованные

Свойства

  • 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()

Защищенные функции

virtual void initStyleOption(QStyleOptionButton *option) const

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

virtual bool event(QEvent *e) override
virtual void focusInEvent(QFocusEvent *e) override
virtual void focusOutEvent(QFocusEvent *e) override
virtual bool hitButton(const QPoint &pos) const override
virtual void keyPressEvent(QKeyEvent *e) override
virtual void mouseMoveEvent(QMouseEvent *e) override
virtual void paintEvent(QPaintEvent *) override

Подробное описание

Кнопка "нажатия", или командная кнопка, — пожалуй, наиболее часто используемый виджет в любом графическом пользовательском интерфейсе. Нажмите (щелкните) кнопку, чтобы дать компьютеру команду выполнить какое-либо действие или ответить на вопрос. Типичные кнопки — 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) для этих кнопок.

Если вам нужен переключаемый режим (см. setCheckable()) или кнопка, которая автоматически повторяет сигнал активации при нажатии, как стрелки в полосе прокрутки (см. setAutoRepeat()), командная кнопка, вероятно, не то, что вам нужно. В сомнительных случаях используйте кнопку инструмента.

Примечание: В macOS, когда ширина кнопки нажатия становится меньше 50, или её высота меньше 30, углы кнопки меняются с закруглённых на квадратные. Используйте функцию setMinimumSize(), чтобы предотвратить это поведение.

Разновидностью командной кнопки является кнопка меню. Они обеспечивают не только одно действие, но и несколько, поскольку при нажатии они отображают меню с вариантами. Используйте метод setMenu(), чтобы связать всплывающее меню с кнопкой.

Другие классы кнопок — это кнопки выбора (см. QRadioButton) и флажки (см. QCheckBox).

В Qt базовый класс QAbstractButton предоставляет большинство режимов и других API, а QPushButton предоставляет логику графического интерфейса. Для получения дополнительной информации об 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)

Создаёт кнопку с родительским элементом parent и текстом text.

QPushButton::QPushButton(QWidget *parent = nullptr)

Создаёт кнопку без текста и с родительским элементом parent.

[slot] void QPushButton::showMenu()

Отображает (вызывает) связанное всплывающее меню. Если такого меню нет, эта функция ничего не делает. Эта функция не возвращается, пока всплывающее меню не будет закрыто пользователем.

[virtual] QPushButton::~QPushButton()

Уничтожает кнопку.

[override virtual protected] bool QPushButton::event(QEvent *e)

Переопределяет: QAbstractButton::event(QEvent *e).

[override virtual protected] void QPushButton::focusInEvent(QFocusEvent *e)

Переопределяет: QAbstractButton::focusInEvent(QFocusEvent *e).

[override virtual protected] void QPushButton::focusOutEvent(QFocusEvent *e)

Переопределяет: QAbstractButton::focusOutEvent(QFocusEvent *e).

[override virtual protected] bool QPushButton::hitButton(const QPoint &pos) const

Переопределяет: QAbstractButton::hitButton(const QPoint &pos) const.

[virtual protected] void QPushButton::initStyleOption(QStyleOptionButton *option) const

Инициализирует option значениями из этого QPushButton. Этот метод полезен для подклассов, когда им требуется QStyleOptionButton, но они не хотят заполнять всю информацию самостоятельно.

См. также QStyleOption::initFrom().

[override virtual protected] void QPushButton::keyPressEvent(QKeyEvent *e)

Переопределяет: QAbstractButton::keyPressEvent(QKeyEvent *e).

QMenu *QPushButton::menu() const

Возвращает связанное всплывающее меню кнопки или nullptr если всплывающее меню не задано.

См. также setMenu().

[override virtual] QSize QPushButton::minimumSizeHint() const

Переопределяет функцию доступа к свойству: QWidget::minimumSizeHint.

[override virtual protected] void QPushButton::mouseMoveEvent(QMouseEvent *e)

Переопределяет: QAbstractButton::mouseMoveEvent(QMouseEvent *e).

[override virtual protected] void QPushButton::paintEvent(QPaintEvent *)

Переопределяет: QAbstractButton::paintEvent(QPaintEvent *e).

void QPushButton::setMenu(QMenu *menu)

Связывает всплывающее меню menu с этой кнопкой. Это превращает кнопку в кнопку меню, которая в некоторых стилях будет отображать маленький треугольник справа от текста кнопки.

Владение меню не передаётся кнопке.

Screenshot of a Fusion style push button with popup menu.

Кнопка с всплывающими меню, показанными в стиле виджета Fusion.

См. также menu().

[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-6.2/qpushbutton.html

Spec-Zone.ru

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