Spec-Zone.ru › Qt 5.13

Класс QPushButton

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

Заголовок: #include <QPushButton>
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()

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

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

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

Кнопка «нажатия» или командная кнопка, пожалуй, наиболее часто используемый виджет в любом графическом пользовательском интерфейсе. Нажмите (нажмите) кнопку, чтобы дать компьютеру команду выполнить какое-либо действие или ответить на вопрос. Типичные кнопки — это «ОК», «Применить», «Отмена», «Закрыть», «Да», «Нет» и «Справка».

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

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

В этом примере сочетание клавиш — Alt+D. Подробнее см. документацию QShortcut (для отображения фактического амперсанда используйте «&&»).

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

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

Командные кнопки в диалоговых окнах по умолчанию являются кнопками по умолчанию, т. е. они автоматически становятся кнопками по умолчанию при получении фокуса ввода с клавиатуры. Кнопка по умолчанию — это кнопка «нажатия», которая активируется при нажатии пользователем клавиши ВВОД или Возврат в диалоговом окне. Вы можете изменить это с помощью setAutoDefault(). Обратите внимание, что кнопки по умолчанию оставляют немного дополнительного места, которое необходимо для рисования индикатора кнопки по умолчанию. Если вы не хотите этого пространства вокруг кнопок, вызовите setAutoDefault(false).

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

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

  • Доступно или нет (серый цвет, отключено).
  • Стандартная кнопка, переключающаяся кнопка или кнопка меню.
  • Включено или выключено (только для переключающихся кнопок).
  • По умолчанию или нормальное. Кнопка по умолчанию в диалоговом окне обычно может быть «нажата» с помощью клавиши ВВОД или Возврат.
  • Автоповтор или нет.
  • Нажата или нет.

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

По умолчанию это свойство равно true для кнопок, у которых родителем является QDialog; в противном случае по умолчанию оно равно 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() const.

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

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qpushbutton.html

Spec-Zone.ru

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