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