QPushButton 类
QPushButton 小部件提供了一个命令按钮。 更多...
头文件 | #include <QPushButton> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake | QT += widgets |
继承自 | QAbstractButton |
继承类 |
属性
- autoDefault : bool
- default : bool
- flat : bool
公共函数
QPushButton(QWidget *parent = nullptr) | |
QPushButton(const QString &text, QWidget *parent = nullptr) | |
QPushButton(const QIcon &icon, const QString &text, 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 |
详细描述
按钮,也称为命令按钮,可能是任何图形用户界面中最常用的控件。点击按钮可以命令计算机执行某些操作,或回答问题。典型的按钮包括:确定、应用、取消、关闭、是、否和帮助。
命令按钮通常是矩形,并显示描述其操作的文本标签。可以通过在首选字符之前使用连字符在文本中指定快捷键。例如
QPushButton *button = new QPushButton("&Download", this);
在这个例子中,快捷键是Alt+D。有关详细信息,请参阅QShortcut文档(要显示实际的连字符,请使用'&&')。
按钮显示文本标签,并可可选地显示一个小图标。这些可以通过构造函数设置,以后可以使用setText()和setIcon()来更改。如果按钮被禁用,则会根据GUI样式操作文本和图标的显示方式,使按钮看起来“已禁用”。
按钮在以下情况下会发出clicked
信号:当鼠标激活、空格键,或者通过键盘快捷键激活时。将此信号连接以执行按钮的动作。按钮还提供了一些不太常用的信号,例如pressed
和released
。
对话框中的命令按钮默认设置为自动默认按钮,即,当它们获得键盘输入焦点时,它们会自动成为默认的推送按钮。默认按钮是在对话框中,当用户按下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。
也请参考 QToolButton、QRadioButton 和 QCheckBox。
属性文档
autoDefault : bool
该属性表示按钮是否是自动默认按钮
如果此属性设置为true,则按钮是自动默认按钮。
在某些GUI样式下,默认按钮有一个额外的边框绘制,宽达3像素或更多。Qt自动保留围绕自动默认按钮的空间,即自动默认按钮可能有略大的大小提示。
对于有 QDialog 父对象的按钮,此属性的默认值为true;否则默认为false。
请参阅 default 属性,以了解默认和自动默认如何交互的详细信息。
访问函数
bool | autoDefault() const |
void | setAutoDefault(bool) |
default : bool
该属性表示按钮是否是默认按钮
默认和自动默认按钮决定当用户在对话框中按下Enter键时会发生什么。
在此属性设置为true的按钮(即对话框的 默认 按钮)将自动按下,只有一个例外:如果当前有专注的自动默认按钮,则按下的按钮是自动默认按钮。当对话框有自动默认按钮但没有默认按钮时,按下Enter键将按下当前有专注的自动默认按钮,如果没有按钮有焦点,则按下的将是焦点链中的下一个自动默认按钮。
在对话框中,一次只能有一个按钮是默认按钮。该按钮将显示为一个额外的边框(取决于GUI样式)。
默认按钮行为仅在对话框中提供。按钮可以通过键盘按下Spacebar键在按钮有焦点时始终被单击。
如果在对话框可见时将当前默认按钮的默认属性设置为false,则在下一次对话框中的按钮获得焦点时,将自动分配新的默认按钮。
此属性的默认值是false。
访问函数
bool | isDefault() const |
void | setDefault(bool) |
flat : bool
该属性表示按钮边框是否突出显示
此属性的默认值为false。如果设置了此属性,大多数样式将不会绘制按钮背景,除非按钮被按下。可以使用setAutoFillBackground() 确保使用 QPalette::Button 刷子填充背景。
访问函数
bool | isFlat() const |
void | setFlat(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).
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().
[槽函数]
void QPushButton::showMenu()
显示(弹出)相关联的弹出式菜单。如果没有此类菜单,此函数将不执行任何操作。此函数不会返回,直到用户关闭弹出式菜单。
[重写虚函数]
QSize QPushButton::sizeHint() const
重写用于访问属性的访问函数:QWidget::sizeHint.
© 2024 The Qt Company Ltd. 本文档的贡献者拥有其各自的版权。本提供的文档是在GNU自由文档许可证版本1.3的条款下许可的,由自由软件基金会发布。Qt及其相关标志是The Qt Company Ltd.在芬兰和其他国家的商标。所有其他商标均为其各自所有者的财产。