QpushButton 类
Detailed Description – 详细描述
按钮或命令按钮可能是任何图形用户界面中最常用的窗口小部件。 按下(单击)按钮以命令计算机执行某些操作或回答问题。 典型的按钮是“确定”,“应用”,“取消”,“关闭”,“是”,“否”和“帮助”。
命令按钮为矩形,通常显示描述其操作的文本标签。 可以通过在文本中的首选字符前面加上与号来指定快捷键。 例如:

在此示例中,快捷方式为Alt + D。 有关详细信息,请参见QShortcut文档(要显示实际的“&”号,请使用“ &&”)。

按钮显示文本标签,还可以显示一个小图标。 可以使用构造函数来设置这些值,以后可以使用setText()和setIcon()对其进行更改。 如果禁用该按钮,则将根据GUI样式来操纵文本和图标的外观,以使该按钮看起来“已禁用”。

当通过鼠标,空格键或键盘快捷键激活按钮时,按钮会发出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提供GUI逻辑。 有关API的更多信息,请参见QAbstractButton。

另请参见QToolButton,QRadioButton,QCheckBox和GUI Design Handbook:Push Button

Properties – 属性

autoDefault : bool
此属性保存按钮是否为自动默认按钮
如果将此属性设置为true,则按钮是自动默认按钮。
在某些GUI样式中,将绘制一个默认按钮,并在其周围有一个额外的框,最多3像素或更多。 Qt会自动在自动默认按钮周围保留此空间,即自动默认按钮的提示尺寸可能会稍大。
对于具有QDialog父级的按钮,此属性的默认值为true;否则为false。 否则默认为false。
有关默认和自动默认如何交互的详细信息,请参见default属性。
访问函数:
bool autoDefault() const
void setAutoDefault(bool)

default : bool
此属性保存按钮是否为默认按钮

默认和自动默认按钮决定当用户在对话框中按Enter键时会发生什么。

当用户按下Enter键时,具有此属性设置为true的按钮(即对话框的默认按钮)将自动被按下,但有一个例外:如果autoDefault按钮当前具有焦点,则按下autoDefault按钮。 当对话框具有autoDefault按钮但没有默认按钮时,按Enter键将按当前具有焦点的autoDefault按钮,或者如果没有按钮具有焦点,则按焦点链中的下一个autoDefault按钮。

在对话框中,一次只能有一个按钮是默认按钮。 然后,此按钮将显示一个额外的框架(取决于GUI样式)。

默认的按钮行为仅在对话框中提供。 当按钮具有焦点时,始终可以通过按空格键从键盘上单击按钮。

如果在对话框可见时将当前默认按钮的default属性设置为false,则下次对话框中的按钮获得焦点时,将自动分配一个新的默认值。
此属性的默认值为false。
访问函数:
bool isDefault() const
void setDefault(bool)

Public Slots – 公共插槽

void QPushButton::showMenu()
显示(弹出)相关的弹出菜单。 如果没有这样的菜单,则此功能不起作用。 直到用户关闭了弹出菜单,此功能才返回。

Protectd Funtions – 保护方法

void QPushButton::initStyleOption(QStyleOptionButton *option) const
使用此QPushButton中的值初始化option。 当子类需要QStyleOptionButton但又不想自己填写所有信息时,此方法很有用。
另请参见QStyleOption :: initFrom()。

Public Funtions – 公共函数

QPushButton::QPushButton(const QIcon &icon, const QString &text, QWidget *parent = nullptr)
构造一个带有icon,text和parent的按钮。
请注意,您还可以将QPixmap对象作为图标传递(由于C ++提供了隐式类型转换)。

QPushButton::QPushButton(const QString &text, QWidget *parent = nullptr)
构造一个带有父parent和text的按钮。

QPushButton::QPushButton(QWidget *parent = nullptr)
构造一个没有文本和parent的按钮。

QPushButton::~QPushButton()
销毁按钮。

autoDefault : bool
此属性保存按钮是否为自动默认按钮

如果将此属性设置为true,则按钮是自动默认按钮。

在某些GUI样式中,将绘制一个默认按钮,并在其周围有一个额外的框,最多3像素或更多。 Qt会自动在自动默认按钮周围保留此空间,即自动默认按钮的提示尺寸可能会稍大。

对于具有QDialog父级的按钮,此属性的默认值为true;否则为false。 否则默认为false。

有关默认和自动默认如何交互的详细信息,请参见default属性。
访问函数:
bool autoDefault() const
void setAutoDefault(bool)

default : bool
此属性保存按钮是否为默认按钮

默认和自动默认按钮决定当用户在对话框中按Enter键时会发生什么。

当用户按下Enter键时,具有此属性设置为true的按钮(即对话框的默认按钮)将自动被按下,但有一个例外:如果autoDefault按钮当前具有焦点,则按下autoDefault按钮。 当对话框具有autoDefault按钮但没有默认按钮时,按Enter键将按当前具有焦点的autoDefault按钮,或者如果没有按钮具有焦点,则按焦点链中的下一个autoDefault按钮。

在对话框中,一次只能有一个按钮是默认按钮。 然后,此按钮将显示一个额外的框架(取决于GUI样式)。

默认的按钮行为仅在对话框中提供。 当按钮具有焦点时,始终可以通过按空格键从键盘上单击按钮。

如果在对话框可见时将当前默认按钮的default属性设置为false,则下次对话框中的按钮获得焦点时,将自动分配一个新的默认值。
此属性的默认值为false。
访问函数:
bool isDefault() const
void setDefault(bool)

flat : bool
此属性保存是否提高按钮边框

此属性的默认值为false。 如果设置了此属性,除非按下按钮,否则大多数样式都不会绘制按钮背景。 setAutoFillBackground()可用于确保使用QPalette :: Button画笔填充背景。
访问函数:
bool isFlat() const
void setFlat(bool)

QMenu *QPushButton::menu() const
返回按钮的关联弹出菜单,如果未设置弹出菜单,则返回nullptr。
另请参见setMenu()。

void QPushButton::setMenu(QMenu *menu)
将弹出菜单menu与此按钮关联。 这会将按钮变成菜单按钮,在某些样式中,该按钮将在按钮文本的右侧产生一个小三角形。
菜单的所有权未转移到按钮。

以Fusion小部件样式显示的带有弹出菜单的按钮。
另请参见menu()。

Leave a Comment