Qt之QPushButton

详细描述

QPushButton控件提供一个控制按钮。

在任何图形用户界面中,按钮或者说控制按钮也许是最常用的控件。按按钮图控制第难熬实现一些动作或者询问一个问题。典型的按钮像OK, Apply, Cancel, Close, Yes, No and Help。

一个控制按钮是矩形的,并且通常显示一个文本来描述它的动作。可以在文本中首字符前使用'&'与来指定快捷键。例如:

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

在这个例子中快捷键是“Alt+D”,详情可查看QShortcut文档(想要显示’&‘,可以使用‘&&’)。

按钮显示文本和随便的小图标。这些可以在使用构造函数时设置,也可以在之后使用setText和setIcon修改。如果按钮不使能,文本和图标的外观将遵守GUI的样式去修改,让其变得像不使能。

当按钮被鼠标、空格键、键盘快捷键激活时将发送信号clicked().可以连接这个信号去实现按钮的动作。按钮也提供不常用的信号,像pressed和released。

对话框中的控制按钮默认是自动默认按钮,i.e.当收到键盘输入聚集时,他们自动成为默认的按钮。默认按钮是指当对话框中用户按Enter和Return键时会被激活的按钮。你可以通过setAutoDefault去修改。注意默认按钮必须留出一些额外的空白区来显示默认按钮指示器。如果你不想你的按钮周围有空白,可以调用setAutoDefault(false)。

为了成为核型,按钮控件已经成长了很多以适应过去十年的众多变化。微软样式表现在可以显示10种不同的windows按钮样式,而且对于文本如果将所有的特征组合都考虑的话,样式可以达到几十种之多。

最重要的模式或状态:

  • 可不可用(灰色的,不使能)
  • 标准按钮,切换按钮,菜单按钮
  • 开关(仅对于切换按钮)
  • 默认或常规(对话框中的默认按钮可以被clicked通过Enter和Return键)
  • 重不重复
  • 下不下沉

通常来说,当应用或对话窗口实现一个动作在用户点击按钮(两Apply,Cancl,Close和Help)和窗口需要一个宽的矩形文本标签是使用按钮。小部分的,通常对于方形按钮去改变窗口的状态而不是实现动作的话,是工具按钮而不是控制按钮。对于这些按钮,Qt提供指定的类(QToolButton)

如果你需要切换功能(见setCheckable)或者当按钮按住时自动重复激活信号,像滚动条里的箭头(见setAutoRepeat()),控制按钮可能不是你想要的。当怀疑的时候,使用toolButton。

注意:
        在macOS系统中,当按钮的宽度小于50或者高度小于30,按钮的角将从圆弧变为方形。使用setMinimumSize函数来避免这种现象

       控制按钮的一个变化是菜单按钮。这提供了不仅仅是一个控制而是几个,当它们被点击时他们弹出一个可选择的菜单。设置方法setMenu()来关联一个弹出菜单和按钮。

其他按钮类是选择按钮(见QRadioButton)和勾选按钮(QCheckBox)。

在Qt中,QAbstractButton基类提供最多的方法和其他接口,QPushButton提供GUI逻辑。查看QAbstractButton获取更多关于API的信息。
        


属性文档

 autoDefault:bool

这个属性决定按钮是否是一个自动默认按钮。

如果这个属性被设置为true则按钮是一个自动默认按钮。

在一些GUI样式中默认按钮会有一个额外的边框在按钮周围,这个边框有3个像素甚至更粗。Qt自动保持这个空白包围在自动默认按钮,也就是说自动默认按钮可能有一个稍微大一点的提示。

对于父对象是QDialog类的按钮,这个属性的默认值为true,其他情况为false。

查看default属性了解default和autoDefault属性如何相互作用的。   

default:bool

这个属性决定按钮是否是一个默认按钮。

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

一个按钮的default属性被设置为true(即对话框的默认按钮),那么这个按钮将在用户按下Enter时被触发按下,有个例外:如果一个autoDefault按钮这时有焦点,则这个autoDefault按钮被按下。

当对话框有autoDfault按钮而没有default按钮时,按下Enter将出发当前有焦点的autoDefault按钮,或者如果没有按钮有焦点,则在焦点链中下一个autoDefault按钮被按下。

在对话框中,在同一时刻只能有一个按钮是default按钮。这个按钮当时会显示一个额外的框(依赖于GUI样式)。

default按钮行为仅仅存在于对话框中。在按钮按钮拥有焦点时,总能被键盘的空白键触发。

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

这个属性默认值为false。

flat : bool

这个属性决定按钮边框是否突起。

这个属性默认值是false。如果这个属性被设置,大多数的样式将不绘画按钮背景,除非按钮被按下。setAutoFillBackground可以被用来确保背景被QPalette:Button刷填充。

成员函数文档

QPushButton::QPushButton(QWidget *parent = Q_NULLPTR)

构造一个只有父对象没有文本的按钮

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

构造一个有父对象和文本的按钮

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

构造一个有图标、父对象和文本的按钮

注意:你也可以用一个QPixmap类作为图标(感谢C++提供的冲突类型转换)

需要清楚重新构建,不设置icon的size则为默认的20高,设置icon大小就是按钮的大小。此外默认图片在左边无法修改,可以使用toolbutton样式更多。

QPushButton::~QPushButton()

销毁按钮

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

用QPushButton的值初始化option。这个方法对于那些需要QStyleOptionButton,但是又不想自己填充所有信息的子类是有用的。

 QMenu *QPushButton::menu() const

返回按钮相关的弹出菜单,当没有弹出菜单时设置为0.

void QPushButton::setMenu(QMenu *menu)

将菜单menu和这个按钮关联。将按钮转为一个菜单按钮,而在一些样式中这将在按钮文本右侧产生一个小三角形

菜单的所有权不会转移到按钮。

[slot] void QPushButton::showMenu()

槽函数。显示(弹出)相关的菜单。如果按钮没有菜单,那这个函数不起作用。这个函数知道用户关闭下拉菜单才会返回。

主要在自定义按钮中重载这个函数,并实现一些操作。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值