QAbstractButton 类是 QPushButton,QCheckBox,QRadioButton 等类的基类,它可以代表按钮、单选纽、复选纽等重要窗口部件。通常不会直接使用这个类,这里主要介绍它的一些属性、信号和槽,介绍时暂时将这些窗口部件统称为钮。
属性
checkable 属性代表钮是否支持开关状态,比如按钮一般没有开关状态,而单选钮和复选钮都有打开和关闭两个状态。与 checkable 属性相关的成员函数如下:
如果一个钮支持开关状态,则可以用 checked 属性设置它的开关状态,相关的成员函数如下:
其中 setChecked 函数同时也是一个槽。
autoExclusive 属性表示一个钮是否排他,相关的成员函数如下:
排他属性也和钮的开关状态有关,同一个父窗口下的多个排他的钮同时只能有一个是打开的,当一个钮被打开时,其他的钮将自动关闭。
down 属性代表钮是否处于被按下的状态,相关成员函数如下:
注意设置这个属性仅仅是改变钮的外观,不会发射任何信号。
通过 icon 和 text 属性可以设置钮所显示的图标及文本,相关成员函数如下:
shortcut 属性代表钮的快捷键,相关成员函数如下:
从键盘输入一个钮的快捷键等价于单击这个钮。设置快捷键所需的 QKeySequence 对象可用如下方式构造:
信号
在钮上用鼠标左键或者当钮得到焦点的时候用空格键都能操作这个钮。当钮被按下和松开时,将发射以下信号:
当单击钮时,将发射以下信号:
其中参数 checked 表示钮是否被打开。
当钮的开关状态变化时,将发射以下信号:
其中参数 checked 表示钮是否被打开。
槽
下面的两个槽都能够模拟钮被单击的过程:
两者的不同点在于,click 函数不会改变钮的外观,它会直接进行单击的处理过程;而animateClick() 函数将完全模拟用户按下按的过程,参数 msec 就是钮被按下的毫秒数。两者最终都会导致 pressed,released 和 clicked 信号的发射。
下面的槽将导致钮的开关状态发生切换:
当然,它只对有开关状态的钮发生作用。