Spec-Zone.ru › Qt 6.1

Класс 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

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

Кнопка push, или кнопка команды, пожалуй, самый часто используемый виджет в любом графическом пользовательском интерфейсе. Нажмите (нажмите) кнопку, чтобы дать компьютеру команду выполнить какое-либо действие или ответить на вопрос. Типичные кнопки: OK, Применить, Отмена, Закрыть, Да, Нет и Помощь.

Кнопка команды прямоугольная и обычно отображает текстовую метку, описывающую ее действие. Краткую клавишу можно указать, поместив перед предпочтительным символом амперсанд в тексте. Например:

QPushButton *button = new QPushButton("&Download", this);

В этом примере сочетанием клавиш является Alt+D. Подробности см. в документации QShortcut (чтобы отобразить фактический амперсанд, используйте '&&').

Кнопки push отображают текстовую метку и, необязательно, небольшой значок. Их можно установить с помощью конструкторов и изменить позже, используя setText() и setIcon(). Если кнопка отключена, внешний вид текста и значка будет изменён в соответствии со стилем GUI, чтобы кнопка выглядела "отключённой".

Кнопка push испускает сигнал clicked(), когда она активируется мышью, клавишей пробела или сочетанием клавиш. Подключитесь к этому сигналу, чтобы выполнить действие кнопки. Кнопки push также предоставляют менее часто используемые сигналы, например pressed() и released().

Кнопки команд в диалоговых окнах по умолчанию являются кнопками авто-по умолчанию, то есть они автоматически становятся кнопкой по умолчанию, когда получают фокус ввода с клавиатуры. Кнопка по умолчанию — это кнопка push, которая активируется, когда пользователь нажимает клавишу Enter или Return в диалоговом окне. Это можно изменить с помощью setAutoDefault(). Обратите внимание, что кнопки авто-по умолчанию резервируют немного дополнительного места, что необходимо для отображения индикатора кнопки по умолчанию. Если вы не хотите этого места вокруг кнопок, вызовите setAutoDefault(false).

Будучи столь центральными, виджеты кнопок за последние десять лет приобрели множество вариаций. Руководство Microsoft по стилю теперь показывает около десяти различных состояний кнопок push Windows, а текст подразумевает, что их гораздо больше, когда учитываются все комбинации функций.

Наиболее важные режимы или состояния:

  • Доступен или нет (серый, отключён).
  • Стандартная кнопка push, переключаемая кнопка push или кнопка меню.
  • Включено или выключено (только для переключаемых кнопок push).
  • По умолчанию или обычно. Кнопка по умолчанию в диалоговом окне, как правило, может быть "нажата" с помощью клавиш Enter или Return.
  • Автоповтор или нет.
  • Нажата или нет.

Как общее правило, используйте кнопку push, когда приложение или диалоговое окно выполняет действие при нажатии пользователя (например, Применить, Отмена, Закрыть и Помощь) и когда виджет должен иметь широкую прямоугольную форму с текстовой меткой. Небольшие, как правило, квадратные кнопки, которые изменяют состояние окна, а не выполняют действие (например, кнопки в правом верхнем углу QFileDialog) не являются кнопками команд, а кнопками инструментов. Qt предоставляет специальный класс (QToolButton) для этих кнопок.

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

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

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

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

В Qt базовый класс QAbstractButton предоставляет большинство режимов и другого API, а QPushButton предоставляет логику GUI. См. QAbstractButton для получения дополнительной информации об API.

См. также QToolButton, QRadioButton, QCheckBox, и Руководство по проектированию графического интерфейса: Кнопка push.

END_OF_DOCUMENT_MARKER

Документация свойств

autoDefault : bool

Это свойство указывает, является ли кнопка кнопкой по умолчанию.

Если это свойство установлено в значение true, то кнопка является кнопкой по умолчанию.

В некоторых стилях графического интерфейса кнопка по умолчанию отображается с дополнительной рамкой, шириной до 3 пикселей или более. Qt автоматически сохраняет это пространство вокруг кнопок по умолчанию, т.е. кнопки по умолчанию могут иметь немного больший размер.

По умолчанию для кнопок, у которых родительский элемент является QDialog, это свойство установлено в значение true; в противном случае по умолчанию оно равно false.

См. свойство default для подробной информации о том, как свойства default и auto-default взаимодействуют.

Функции доступа:

bool autoDefault() const
void setAutoDefault(bool)

default : bool

Это свойство указывает, является ли кнопка кнопкой по умолчанию.

Кнопки по умолчанию и autoDefault определяют, что произойдет, когда пользователь нажмет Enter в диалоговом окне.

Кнопка с этим свойством, установленным в значение true (т.е., default кнопка диалогового окна), будет автоматически нажата, когда пользователь нажмет 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)

Создает кнопку со значком и текстом, и родительским элементом.

Обратите внимание, что вы также можете передать объект QPixmap в качестве значка (благодаря неявной операции преобразования типов, предоставляемой C++).

QPushButton::QPushButton(const QString &text, QWidget *parent = nullptr)

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

QPushButton::QPushButton(QWidget *parent = nullptr)

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

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).

bool QPushButton::hitButton(const QPoint &pos) const

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

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::mouseMoveEvent(QMouseEvent *e)

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

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

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

Spec-Zone.ru

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