QPushButton 类

QPushButton 小部件提供了一个命令按钮。 更多...

头文件 #include <QPushButton>
CMakefind_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmakeQT += widgets
继承自 QAbstractButton
继承类

QCommandLinkButton

属性

公共函数

QPushButton(QWidget *parent = nullptr)
QPushButton(const QString &text, QWidget *parent = nullptr)
QPushButton(const QIcon &icon, const QString &text, QWidget *parent = nullptr)
virtual~QPushButton()
boolautoDefault() const
boolisDefault() const
boolisFlat() const
QMenu *menu() const
voidsetAutoDefault(bool)
voidsetDefault(bool)
voidsetFlat(bool)
voidsetMenu(QMenu *menu)

重实现的公共函数

virtual QSizeminimumSizeHint() const override
virtual QSizesizeHint() const override

公共槽

voidshowMenu()

受保护函数

virtual voidinitStyleOption(QStyleOptionButton *option) const

重实现的保护函数

virtual boolevent(QEvent *e) override
virtual voidfocusInEvent(QFocusEvent *e) override
virtual voidfocusOutEvent(QFocusEvent *e) override
virtual boolhitButton(const QPoint &pos) const override
virtual voidkeyPressEvent(QKeyEvent *e) override
virtual voidmouseMoveEvent(QMouseEvent *e) override
virtual voidpaintEvent(QPaintEvent *) override

详细描述

按钮,也称为命令按钮,可能是任何图形用户界面中最常用的控件。点击按钮可以命令计算机执行某些操作,或回答问题。典型的按钮包括:确定、应用、取消、关闭、是、否和帮助。

命令按钮通常是矩形,并显示描述其操作的文本标签。可以通过在首选字符之前使用连字符在文本中指定快捷键。例如

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

在这个例子中,快捷键是Alt+D。有关详细信息,请参阅QShortcut文档(要显示实际的连字符,请使用'&&')。

按钮显示文本标签,并可可选地显示一个小图标。这些可以通过构造函数设置,以后可以使用setText()和setIcon()来更改。如果按钮被禁用,则会根据GUI样式操作文本和图标的显示方式,使按钮看起来“已禁用”。

按钮在以下情况下会发出clicked信号:当鼠标激活、空格键,或者通过键盘快捷键激活时。将此信号连接以执行按钮的动作。按钮还提供了一些不太常用的信号,例如pressedreleased

对话框中的命令按钮默认设置为自动默认按钮,即,当它们获得键盘输入焦点时,它们会自动成为默认的推送按钮。默认按钮是在对话框中,当用户按下Enter或Return键时激活的推送按钮。您可以使用setAutoDefault()来更改此设置。请注意,自动默认按钮保留了一小部分额外的空间,这是绘制默认按钮指示符所必需的。如果您不需要按钮周围的空间,请调用setAutoDefault(false)。

作为核心部件,按钮控件在过去十年中已经进行了很多种变化和发展。微软风格指南现在展示了十个不同的Windows按钮状态,而文本暗示当考虑所有功能组合时,还有更多的状态。

最重要的模式或状态是

  • 可用或不可用(灰显,禁用)。
  • 标准推送按钮,切换推送按钮或菜单按钮。
  • 开启或关闭(仅适用于切换推送按钮)。
  • 默认或正常。对话框中的默认按钮一般可以用Enter或Return键点击。
  • 自动重复或不。
  • 按下或不。

一般来说,当应用程序或对话框窗口在用户点击时执行动作(如应用、取消、关闭和帮助)并且控件应有一个宽矩形形状和文本标签时,应使用推送按钮。小型、通常是方形且更改窗口状态而不是执行动作的按钮(如QFileDialog右上角的按钮)不是命令按钮,而是工具按钮。Qt为这些按钮提供了专门的类(QToolButton)。

如果您需要切换行为(见setCheckable())或需要像滚动条中的箭头一样按下的按钮自动重复激活信号,那么可能不想使用命令按钮。如果有疑问,请使用工具按钮。

注意:在macOS上,当按钮的宽度小于50或高度小于30时,按钮的角落会被改为方形。使用 setMinimumSize() 函数来防止这种行为。

命令按钮的一种变化形式是菜单按钮。它们不仅提供一个命令,还有多个命令,因为当它们被点击时,会弹出一个选项菜单。使用 setMenu() 方法将弹出菜单与按钮关联。

其他按钮类包括选项按钮(见 QRadioButton)和复选框(见 QCheckBox)。

在Qt中,QAbstractButton 基类提供了大多数模式和其它API,而QPushButton提供GUI逻辑。更多信息请参见 QAbstractButton

也请参考 QToolButtonQRadioButtonQCheckBox

属性文档

autoDefault : bool

该属性表示按钮是否是自动默认按钮

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

在某些GUI样式下,默认按钮有一个额外的边框绘制,宽达3像素或更多。Qt自动保留围绕自动默认按钮的空间,即自动默认按钮可能有略大的大小提示。

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

请参阅 default 属性,以了解默认和自动默认如何交互的详细信息。

访问函数

boolautoDefault() const
voidsetAutoDefault(bool)

default : bool

该属性表示按钮是否是默认按钮

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

在此属性设置为true的按钮(即对话框的 默认 按钮)将自动按下,只有一个例外:如果当前有专注的自动默认按钮,则按下的按钮是自动默认按钮。当对话框有自动默认按钮但没有默认按钮时,按下Enter键将按下当前有专注的自动默认按钮,如果没有按钮有焦点,则按下的将是焦点链中的下一个自动默认按钮。

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

默认按钮行为仅在对话框中提供。按钮可以通过键盘按下Spacebar键在按钮有焦点时始终被单击。

如果在对话框可见时将当前默认按钮的默认属性设置为false,则在下一次对话框中的按钮获得焦点时,将自动分配新的默认按钮。

此属性的默认值是false。

访问函数

boolisDefault() const
voidsetDefault(bool)

flat : bool

该属性表示按钮边框是否突出显示

此属性的默认值为false。如果设置了此属性,大多数样式将不会绘制按钮背景,除非按钮被按下。可以使用setAutoFillBackground() 确保使用 QPalette::Button 刷子填充背景。

访问函数

boolisFlat() const
voidsetFlat(bool)

成员函数文档

[明确构造函数] QPushButton::QPushButton(QWidget *parent = nullptr)

构建一个无文本的按钮,带有 父类

[明确构造函数] QPushButton::QPushButton(const QString &text, QWidget *parent = nullptr)

构建一个带有父 父类 和文本 文本 的按钮。

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

构建一个带有 图标 和文本 文本,以及 父类 的按钮。

注意,您还可以传递一个 QPixmap 对象作为图标(多亏了C++提供的隐式类型转换)。

[虚函数,noexcept] 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

使用此 QPushButton 的值来初始化 选项。此方法对于子类很有用,当它们需要 QStyleOptionButton,但又不想填写所有信息时。

另请参阅 QStyleOption::initFrom().

[重写虚保护] void QPushButton::keyPressEvent(QKeyEvent *e)

重写:QAbstractButton::keyPressEvent(QKeyEvent *e).

返回按钮相关联的弹出式菜单或 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 与此按钮关联。这使得按钮变成了一个菜单按钮,在某些样式中会在按钮文本右侧产生一个小三角形。

菜单的所有权不会传输给按钮。

Screenshot of a Fusion style push button with popup menu.

弹出式菜单显示在 Fusion 窗体样式 的按钮上。

另请参阅menu().

[槽函数] void QPushButton::showMenu()

显示(弹出)相关联的弹出式菜单。如果没有此类菜单,此函数将不执行任何操作。此函数不会返回,直到用户关闭弹出式菜单。

[重写虚函数] QSize QPushButton::sizeHint() const

重写用于访问属性的访问函数:QWidget::sizeHint.

© 2024 The Qt Company Ltd. 本文档的贡献者拥有其各自的版权。本提供的文档是在GNU自由文档许可证版本1.3的条款下许可的,由自由软件基金会发布。Qt及其相关标志是The Qt Company Ltd.在芬兰和其他国家的商标。所有其他商标均为其各自所有者的财产。