Spec-Zone.ru › Qt 5.6

Класс QPushButton

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

Заголовок: #include <QPushButton>
qmake: QT += widgets
Наследует: QAbstractButton
Наследуется от:

QCommandLinkButton

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

Свойства

  • autoDefault : bool
  • default : bool
  • flat : bool
  • 11 свойств унаследовано от QAbstractButton
  • 58 свойств унаследовано от QWidget
  • 1 свойство унаследовано от QObject

Открытые функции

QPushButton(QWidget *parent = Q_NULLPTR)
QPushButton(const QString &text, QWidget *parent = Q_NULLPTR)
QPushButton(const QIcon &icon, const QString &text, QWidget *parent = Q_NULLPTR)
~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
virtual QSize sizeHint() const
  • 21 открытая функция унаследована от QAbstractButton
  • 211 открытых функций унаследовано от QWidget
  • 31 открытая функция унаследована от QObject
  • 14 открытых функций унаследовано от QPaintDevice

Открытые слоты

void showMenu()
  • 5 открытых слотов унаследовано от QAbstractButton
  • 19 открытых слотов унаследовано от QWidget
  • 1 открытый слот унаследовано от QObject

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

void initStyleOption(QStyleOptionButton *option) const

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

virtual bool event(QEvent *e)
virtual void focusInEvent(QFocusEvent *e)
virtual void focusOutEvent(QFocusEvent *e)
virtual bool hitButton(const QPoint &pos) const
virtual void keyPressEvent(QKeyEvent *e)
virtual void paintEvent(QPaintEvent *)
  • 14 защищенных функций унаследовано от QAbstractButton
  • 35 защищенных функций унаследовано от QWidget
  • 9 защищенных функций унаследовано от QObject
  • 1 защищенная функция унаследована от QPaintDevice

Дополнительные унаследованные члены

  • 4 сигнала унаследовано от QAbstractButton
  • 3 сигнала унаследовано от QWidget
  • 2 сигнала унаследовано от QObject
  • 5 статических открытых членов унаследовано от QWidget
  • 11 статических открытых членов унаследовано от 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) для этих кнопок.

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

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

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

class="generic" width="100%">
Screenshot of a Macintosh style push button Кнопка, отображаемая в стиле виджета Macintosh.

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

Screenshot of a Windows Vista style push button Кнопка, отображаемая в стиле виджета Windows Vista.
Screenshot of a Fusion style push button Кнопка, отображаемая в стиле виджета Fusion.

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

См. также QToolButton, QRadioButton, QCheckBox и Руководство по разработке графического интерфейса пользователя: кнопка.

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

autoDefault : bool

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

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

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

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

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

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

bool autoDefault() const
void setAutoDefault(bool)

default : bool

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

Кнопки по умолчанию и autodefault определяют, что происходит при нажатии пользователем клавиши 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(QWidget *parent = Q_NULLPTR)

Конструирует кнопку без текста и с родителем parent.

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

Конструирует кнопку с родителем parent и текстом text.

QPushButton::QPushButton(const QIcon &icon, const QString &text, QWidget *parent = Q_NULLPTR)

Конструирует кнопку с icon и text, и с родителем parent.

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

QPushButton::~QPushButton()

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

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

Переопределено из QObject::event().

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

Переопределено из QWidget::focusInEvent().

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

Переопределено из QWidget::focusOutEvent().

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

Переопределено из QAbstractButton::hitButton().

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

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

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

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

Переопределено из QWidget::keyPressEvent().

QMenu *QPushButton::menu() const

Возвращает ассоциированное всплывающее меню кнопки или 0, если всплывающее меню не было задано.

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

[virtual] QSize QPushButton::minimumSizeHint() const

Переопределено из QWidget::minimumSizeHint().

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

Переопределено из QWidget::paintEvent().

void QPushButton::setMenu(QMenu *menu)

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

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

Screenshot of a Fusion style push button with popup menu.

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

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

[slot] void QPushButton::showMenu()

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

[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/archives/qt-5.6/qpushbutton.html

Spec-Zone.ru

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