目录
[1 属性](#1 属性)
[2 公共职能](#2 公共职能)
[3 重新实现的公共功能](#3 重新实现的公共功能)
[4 公用插槽](#4 公用插槽)
[5 受保护的功能](#5 受保护的功能)
[6 保护方法](#6 保护方法)
[7 详细说明](#7 详细说明)
1 属性
自动默认值:bool
此属性保存按钮是否为自动默认按钮
如果此属性设置为true,则该按钮为自动默认按钮。
在某些GUI样式中,默认按钮周围会绘制一个额外的框架,最多3个像素或更多。Qt自动在自动默认按钮周围保持此空间空闲,即,自动默认按钮可能具有稍大的大小提示。
对于具有QDialog父级的按钮,此属性的默认值为true;否则默认为false。
有关默认和自动默认如何交互的详细信息,请参见默认属性。
访问功能:
cpp
bool autoDefault() const
void setAutoDefault(bool)
默认值:bool
此属性保存按钮是否为默认按钮
默认和自动默认按钮决定用户在对话框中按下回车键时会发生什么。
当用户按下回车键时,将自动按下此属性设置为true的按钮(即对话框的默认按钮),但有一个例外:如果autoDefault按钮当前具有焦点,则会按下autoDefault按钮。当对话框有autoDefault按钮但没有默认按钮时,按enter键将按下当前具有焦点的autoDefault按钮,或者如果没有按钮具有焦点,则按下焦点链中的下一个autoDefault按钮。
在对话框中,一次只能有一个按钮作为默认按钮。然后,此按钮将显示一个附加框(取决于GUI样式)。
默认按钮行为仅在对话框中提供。当按钮具有焦点时,始终可以通过按空格键从键盘上单击按钮。
如果在对话框可见时,当前默认按钮的默认属性设置为false,则下次对话框中的按钮获得焦点时,将自动分配新的默认值。
此属性的默认值为false。
访问功能:
cpp
bool isDefault() const
void setDefault(bool)
平面:bool
此属性保存按钮边框是否凸起
此属性的默认值为false。如果设置了此属性,则除非按下按钮,否则大多数样式都不会绘制按钮背景。setAutoFillBackground()可用于确保使用QPalette:按钮笔刷填充背景。
访问功能:
cpp
bool isFlat() const
void setFlat(bool)
2 公共职能
cpp
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)
3 重新实现的公共功能
cpp
virtual QSize minimumSizeHint() const override
virtual QSize sizeHint() const override
4 公用插槽
cpp
void showMenu()
5 受保护的功能
cpp
void initStyleOption(QStyleOptionButton *option) const
6 保护方法
cpp
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
7 详细说明
按钮或命令按钮可能是任何图形用户界面中最常用的小部件。按下(单击)按钮可命令计算机执行某些操作或回答问题。典型的按钮有"确定"、"应用"、"取消"、"关闭"、"是"、"否"和"帮助"。
命令按钮是矩形的,通常显示描述其操作的文本标签。快捷键可以通过在文本中的首选字符前面加上"&"来指定。例如
cpp
QPushButton *button = new QPushButton("&Download", this);
按钮显示一个文本标签,还可以选择显示一个小图标。这些可以使用构造函数进行设置,稍后使用**setText()和setIcon()**进行更改。如果按钮被禁用,文本和图标的外观将根据GUI样式进行操作,使按钮看起来"被禁用"。
当鼠标、空格键或键盘快捷键激活按钮时,按钮会发出clicked()信号。连接到此信号以执行按钮的操作。按钮还提供不太常用的信号,例如pressed()和released()。
对话框中的命令按钮默认为自动默认按钮,即当它们接收到键盘输入焦点时,它们会自动成为默认按钮。默认按钮是当用户在对话框中按下Enter或Return键时激活的按钮。您可以使用setAutoDefault()进行更改。请注意,自动默认按钮保留了一点额外的空间,这是绘制默认按钮指示器所必需的。如果您不希望按钮周围有此空间,请调用setAutoDefault(false)。
在过去的十年里,按钮小部件作为如此重要的部件,已经发展到可以适应许多变化。微软风格指南现在显示了Windows按钮的大约十种不同状态,文本暗示,如果考虑到所有功能的组合,还会有几十种。
最重要的模式或状态是:
是否可用(灰显、禁用)。
标准按钮、切换按钮或菜单按钮。
打开或关闭(仅用于切换按钮)。
默认或正常。对话框中的默认按钮通常可以使用Enter或Return键"单击"。
是否自动重复。
是否按下。
一般来说,当应用程序或对话框窗口执行操作时(如"应用"、"取消"、"关闭"和"帮助"),以及当小部件应该具有带文本标签的宽矩形时,请使用按钮。更改窗口状态而不是执行操作的小型(通常为方形)按钮(例如QFileDialog右上角的按钮)不是命令按钮,而是工具按钮。Qt为这些按钮提供了一个特殊的类(QToolButton)。
如果您需要切换行为(请参见setCheckable())或在按下时自动重复激活信号的按钮(如滚动条中的箭头)(请参见setAutoRepeat()),则命令按钮可能不是您想要的。如果有疑问,请使用工具按钮。
**注意:**在macOS上,当按钮的宽度小于50或高度小于30时,按钮的角会从圆形变为方形。使用setMinimumSize()函数可以防止这种行为。
这是一个可搜索的索引。命令按钮的变体是菜单按钮。它们不仅提供一个命令,而且提供多个命令,因为当单击它们时,它们会弹出一个选项菜单。使用方法setMenu()将弹出菜单与按钮相关联。
其他类别的按钮包括选项按钮(请参阅QRadioButton)和复选框(请参阅QCheckBox)。
在Qt中,QAbstractButton基类提供了大多数模式和其他API,QPushButton提供了GUI逻辑。有关API的更多信息,请参见QAbstractButton。
另请参阅QToolButton、QRadioButton、QCheckBox和GUI设计手册:按钮。
cpp
Header: #include <QPushButton>
qmake: QT += widgets
Inherits: QAbstractButton
Inherited By: QCommandLinkButton
cpp
QPushButton::QPushButton(const QIcon &icon, const QString &text, QWidget *parent = nullptr)
构造一个带有图标、文本和父级的按钮。
请注意,您还可以将QPixmap对象作为图标传递(这要归功于C++提供的隐式类型转换)。
cpp
QPushButton::QPushButton(const QString &text, QWidget *parent = nullptr)
构造一个带有父级、父级和文本文本的按钮。
cpp
QPushButton::QPushButton(QWidget *parent = nullptr)
构造一个没有文本和父级的按钮。
cpp
[slot] void QPushButton::showMenu()
显示(弹出)相关的弹出菜单。如果没有这样的菜单,此功能将不起任何作用。在用户关闭弹出菜单之前,此功能不会返回。
cpp
[virtual] QPushButton::~QPushButton()
释放按钮。
cpp
[override virtual protected] bool QPushButton::event(QEvent *e)
重新实现: QAbstractButton::event(QEvent *e).
cpp
[override virtual protected] void QPushButton::focusInEvent(QFocusEvent *e)
重新实现: QAbstractButton::focusInEvent(QFocusEvent *e).
cpp
[override virtual protected] void QPushButton::focusOutEvent(QFocusEvent *e)
重新实现: QAbstractButton::focusOutEvent(QFocusEvent *e).
cpp
[protected] void QPushButton::initStyleOption(QStyleOptionButton *option) const
使用此QPushButton中的值初始化选项。当子类需要QStyleOptionButton,但不想自己填写所有信息时,此方法非常有用。
另请参见QStyleOption::initFrom()。
cpp
[override virtual protected] void QPushButton::keyPressEvent(QKeyEvent *e)
重新实现: QAbstractButton::keyPressEvent(QKeyEvent *e).
cpp
QMenu *QPushButton::menu() const
如果没有设置弹出菜单,则返回按钮的相关弹出菜单或nullptr。
另请参见setMenu()。
cpp
[override virtual] QSize QPushButton::minimumSizeHint() const
重新实现属性的访问函数:QWidget::minimumSizeHint。
cpp
[override virtual protected] void QPushButton::paintEvent(QPaintEvent *)
重新实现: QAbstractButton::paintEvent(QPaintEvent *e).
cpp
void QPushButton::setMenu(QMenu *menu)
将弹出菜单菜单与此按钮相关联。这会将按钮变成菜单按钮,在某些样式中,菜单按钮会在按钮文本的右侧生成一个小三角形。
菜单的所有权不会转移到按钮上。
一个带有弹出菜单的按钮,显示在Fusion小部件样式中。
另请参见menu()。
cpp
[override virtual] QSize QPushButton::sizeHint() const
重新实现属性的访问函数:QWidget::sizeHint.