QPushButton Class

QPushButton 提供一个命令按钮. 更多...

头文件: #include <QPushButton>
qmake: QT += widgets
基类: QAbstractButton
派生类:

QCommandLinkButton

属性

公有函数

QPushButton(QWidget *parent = Q_NULLPTR)
QPushButton(const QString &text, QWidget *parent = Q_NULLPTR)
QPushButton(const QIcon &icon, const QString &text, QWidget *parent = Q_NULLPTR)
~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
virtual QSize sizeHint() const

公有槽函数

void showMenu()

受保护的函数

void initStyleOption(QStyleOptionButton *option) const

重新实现的受保护函数

virtual bool event(QEvent *e)
virtual void focusInEvent(QFocusEvent *e)
virtual void focusOutEvent(QFocusEvent *e)
virtual void keyPressEvent(QKeyEvent *e)
virtual void paintEvent(QPaintEvent *)

其他继承的成员

详细描述

QPushButton 提供一个命令按钮.

按钮(或称为命令按钮)可能是GUI界面上最常用的widget. 按下(单击)按钮命令计算机执行一些动作或回答问题. 典型的按钮有OK, 确定, 取消, 关闭, 是, 否和帮助.

通常, 按钮是矩形, 并显示一个描述动作的文本. 按钮的快捷键可以通过在文本前加一个符号('&')指定. 例如:

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

在这个示例中, 快捷键是 Alt+D. 详见 QShortcut (使用 '&&'显示'&').

按钮可以选择显示一个文本或图片, 也可同时显示. 文本和图片可以使用构造函数设置, 也可调用 setText() 和 setIcon()设置. 如果按钮是禁用的, 你可以通过设置GUI样式修改按钮的文本和图片显示效果, 使按钮看起来像 "disabled".

使用鼠标, 空格键或键盘快捷方式激活按钮时, 按钮会发信号 clicked() . 连接这个信号执行按钮的动作. 按钮也提供一些不常用的信号, 例如 pressed() 和 released().

对话框中的按钮是自动默认按钮, 也就是说., 他们接收到键盘输入焦点时, 他们自动变为默认按钮. 在对话框中, 默认按钮是用户按下 键盘(Enter 或 Return)时激活的按钮. 你能调用 setAutoDefault()改变默认按钮. 注意: 自动默认按钮预留少量空间用以绘制默认按钮标识. 如果你可以调用 setAutoDefault(false)去掉预留空间.

在过去十年间, 按钮已发展为容纳更多变化的核心widget. 微软界面风格指南显示大约10种不同的Windows按键和文本提示状态, 如果考虑所有的功能组合, 还会增加几十种状态.

最重要的模式或状态是:

  • 是否可用 (灰色显示表示禁用).
  • 标准按钮, 切换按钮或菜单按钮.
  • 开或关 (仅适用切换按钮).
  • 默认或正常. 默认按钮是对话框中可以使用Enter或Return "点击" .
  • 是否自动重复.
  • 是否按下.

一般而言, 当widget是一个宽的, 带有文本的矩形, 并响应用户的点击(如确定, 取消, 关闭和帮助)时, 使用按钮. 一个小的, 正方形的按钮是工具按钮, 工具按钮是改变窗口状态, 而不触发动作(如QFileDialog右上角的关闭按钮). Qt 提供一个特殊类 (QToolButton) 作为工具按钮.

如果你需要切换行为 (参见 setCheckable()) 或自动重复信号的按钮 (参见 setAutoRepeat()), 那么命令按钮不是你想要的. 当心存疑惑时, 请使用工具按钮.

一个命令按钮的变体是菜单按钮. 它们提供的不是一个命令, 而是多个命令. 单击按钮时, 弹出一个选择菜单. 调用 setMenu()为按钮关联弹出菜单.

其他类型的按钮是选择按钮 (参见 QRadioButton) 和复选框 (参见 QCheckBox).

Screenshot of a Macintosh style push buttonA push button shown in the Macintosh widget style.

Note that when a button's width becomes smaller than 50 or its height becomes smaller than 30, the button's corners are changed from round to square. Use the setMinimumSize() function to prevent this behavior.

Screenshot of a Windows Vista style push button在A push button shown in the Windows Vista widget style.
Screenshot of a Fusion style push buttonA push button shown in the Fusion widget style.

在Qt中, QAbstractButton 基类提供大部分模式和API, QPushButton 提供GUI逻辑. 有关API更多信息参见 QAbstractButton .

参见 QToolButton, QRadioButton, QCheckBox, and GUI Design Handbook: Push Button.

属性

autoDefault : bool

按钮是否是自动默认按钮

true表示按钮是自动默认按钮.

在一些GUI风格中, 默认按钮周围绘制额外边框, 3像素或更多. Qt自动预留自动默认按钮的空间, 即., 自动默认按钮有较大的大小提示.

按钮的父对象是 QDialog 时, 属性默认值是true; 否则默认值是false.

default 和 auto-default如何交互参见 default 属性.

访问函数:

bool autoDefault() const
void setAutoDefault(bool)

default : bool

否是默认按钮

默认和自动默认按钮决定用户在对话框中按下enter键会发生什么.

如果按钮的default属性设置为 true (即., 对话框 默认 按钮,), 表示用户按下enter键时触发按钮的按下动作, 一个例外: 如果一个具有 autoDefault 属性的按钮具有焦点, 这个按钮会触发按下动作. 对话框有 autoDefault 属性按钮但没有 default 按钮, 按下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)

成员函数

QPushButton::QPushButton(QWidget *parent = Q_NULLPTR)

构造函数

参数: parent 父对象

QPushButton::QPushButton(const QString &text, QWidget *parent = Q_NULLPTR)

构造函数

参数: text 显示文本

参数: parent 父对象

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

构造函数

参数: icon 显示图片

参数: text 显示文本

参数: parent 父对象

注意: 你可以使用 QPixmap 对象作为一个图片 (自动调用QIcon的默认构造函数转换).

QPushButton::~QPushButton()

析构函数

[virtual protected] bool QPushButton::event(QEvent *e)

重新实现 QObject::event().

[virtual protected] void QPushButton::focusInEvent(QFocusEvent *e)

重新实现 QWidget::focusInEvent().

[virtual protected] void QPushButton::focusOutEvent(QFocusEvent *e)

重新实现 QWidget::focusOutEvent().

[protected] void QPushButton::initStyleOption(QStyleOptionButton *option) const

使用参数 option 初始化 QPushButton. 这个函数用于需要定义一个 QStyleOptionButton自定义派生类, 但是不想填充实现所有的信息.

参见 QStyleOption::initFrom().

[virtual protected] void QPushButton::keyPressEvent(QKeyEvent *e)

重新实现 QWidget::keyPressEvent().

返回按钮关联的弹出菜单, 0表示未设置弹出按钮.

参见 setMenu().

[virtual] QSize QPushButton::minimumSizeHint() const

重新实现 QWidget::minimumSizeHint().

[virtual protected] void QPushButton::paintEvent(QPaintEvent *)

重新实现 QWidget::paintEvent().

void QPushButton::setMenu(QMenu *menu)

设置按钮关联的弹出菜单 menu . 按钮转为菜单按钮, 有些样式会在按钮的文本右侧绘制一个小三角.

菜单的所有权 没有 转移到按钮.

Screenshot of a Fusion style push button with popup menu.

使用Fusion widget样式显示带有弹出菜单的按钮.

参见 menu().

[slot] void QPushButton::showMenu()

显示关联的弹出菜单. 如果没有设置菜单, 函数什么也不做. 这个函数直到用户关闭弹出菜单才会返回.

[virtual] QSize QPushButton::sizeHint() const

重新实现 QWidget::sizeHint().