QAbstractButton

一、描述

按钮的抽象类。此类的子类处理用户操作,并指定按钮的绘制方式。

如果按钮是文本按钮,字符串中包含与号 ('&'),则 QAbstractButton 会自动创建一个快捷键。

QPushButton *button = new QPushButton(tr("Ro&ck && Roll"), this);

Alt+C 快捷键分配给按钮,即当用户按下 Alt+C 时,按钮将调用 animateClick()。(要显示实际的&符号,使用“&&”)

还可以使用 setShortcut() 函数设置自定义快捷键。这主要用于没有任何文本的按钮。

button->setIcon(QIcon(":/images/print.png"));
button->setShortcut(tr("Alt+F7"));

与其他小部件相反不同,从 QAbstractButton 派生的按钮在禁用时将接受鼠标和上下文菜单事件。

要继承 QAbstractButton

  • 必须至少重新实现 paintEvent() 以绘制按钮的轮廓及其文本或像素图
  • 通常建议重新实现 sizeHint() ,有时也重新实现 hitButton()(确定按下是否在按钮范围内)
  • 对于具有两个以上状态的按钮(如三态按钮),还必须重新实现 checkStateSet() 和 nextCheckState()

二、属性成员

1、autoExclusive : bool

是否启用互斥。默认为 false,单选按钮(QRadioButton)除外。

如果启用了互斥,则属于同一父小部件的可切换状态按钮(checkable = true)的行为就好像它们是同一排他按钮组的一部分。在一个专属按钮组中,任何时候只能选中一个按钮。

该属性对属于按钮组的按钮没有影响。

2、autoRepeat : bool

是否启用自动重复。默认为 false

如果启用了自动重复,则当按钮按下时,pressed()、released() 和 clicked() 信号会定期发出。初始延迟和重复间隔由 autoRepeatDelay autoRepeatInterval 以毫秒为单位定义。

如果通过快捷键按下按钮,则自动重复由系统启用和计时,而不是由此类启用。pressed()、released() 和 clicked() 信号将像正常情况一样发出。

3、autoRepeatDelay : int

自动重复的初始延迟。

4、autoRepeatInterval : int

自动重复的间隔。

5、checkable : bool

是否可切换状态,即是否可切换选中/未选中状态。默认为false。

6、checked : bool

按钮是否被选中。按钮一般有两状态(有的是三态):选中/未选中。

7、down : bool

按钮是否被按下。默认为false。如果设置为 true,则不会发出 press() 和 clicked()信号。

8、icon : QIcon

按钮上显示的图标。图标的默认大小由 GUI 样式定义,但可以通过此属性进行调整。

9、iconSize : QSize

此按钮图标的最大尺寸。较小的图标不会放大。

10、shortcut : QKeySequence

与按钮关联的助记符。

11、text : QString

按钮上显示的文本。

三、成员函数

1、 void animateClick()

执行动画点击:立即按下按钮,并在 100 毫秒后释放。

在释放按钮之前再次调用此函数会重置释放计时器。

与点击相关的所有信号都会适当地发出。

如果按钮被禁用,此功能将不执行任何操作。

2、void click()

执行单击。

与点击相关的所有常用信号都会适当地发出。

如果按钮是可切换状态的的,则按钮的状态被切换。

如果按钮被禁用,此功能将不执行任何操作。

3、【信号】void clicked(bool checked = false)

当按钮被激活(即,当鼠标光标在按钮内时按下然后释放)、键入快捷键或调用 click() 或 animateClick() 时,会发出此信号。

如果调用 setDown()、setChecked() 或 toggle(),则不会发出此信号。

如果按钮是可切换状态的,如果选中,checked 为true,如果未选中,则为false。

4、【信号】void pressed()

按下按钮时会发出此信号。

5、【信号】void released()

松开按钮时发出此信号。

6、void toggle()

切换(可切换状态)按钮的状态。 

7、【信号】void toggled(bool checked)

每当可切换状态按钮更改其状态时,就会发出此信号。如果按钮被选中,checked 为true,如果按钮未选中,则为false。

这可能是用户操作、click() 槽激活的结果,或者因为调用了 setChecked()。

8、【virtual】void checkStateSet()

在使用 setChecked() 时被调用。默认为空函数。

它允许子类重置它们的中间按钮状态。

 

9、QButtonGroup * group()

返回此按钮所属的组。

10、【virtual】bool hitButton(const QPoint &pos)

返回 pos 是否在可点击的按钮矩形内。

默认情况下,可点击区域是整个小部件。子类可以重新实现此功能,以支持不同形状和大小的可点击区域。

11、【virtual】void nextCheckState()

单击按钮时会调用此函数。

它允许子类实现中间按钮状态。

 

12、【pure virtual】void paintEvent(QPaintEvent *e)

纯虚函数。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值