Класс QPushButton
Виджет QPushButton предоставляет командную кнопку. Подробнее...
| Заголовок: | #include <QPushButton> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| 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() |
Защищенные функции
| 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 предоставляет логику пользовательского интерфейса. См. QAbstractButton для получения дополнительной информации об API.
См. также 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
Это свойство указывает, является ли кнопка кнопкой по умолчанию.
Кнопки по умолчанию и 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 с этой кнопкой. Это превращает кнопку в кнопку меню, которая в некоторых стилях будет отображать небольшой треугольник справа от текста кнопки.
Владение меню не передается кнопке.
Кнопка со всплывающими меню, показанными в стиле виджета 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.0/qpushbutton.html