QAbstractButton 类是 QPushButton,QCheckBox,QRadioButton 等类的基类,它可以代表按钮、单选纽、复选纽等重要窗口部件。通常不会直接使用这个类,这里主要介绍它的一些属性、信号和槽,介绍时暂时将这些窗口部件统称为钮。
属性
checkable 属性代表钮是否支持开关状态,比如按钮一般没有开关状态,而单选钮和复选钮都有打开和关闭两个状态。与 checkable 属性相关的成员函数如下:
bool isCheckable() const; // 判断是否支持开关状态 void setCheckable(bool on); // 设置是否支持开关状态
bool isChecked() const; // 判断是否打开 void setChecked(bool on); // 设置是否打开,这是一个槽
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); // 设置文本
QKeySequence shortcut() const; // 获得快捷键 void setShortcut(const QKeySequence &key); // 设置快捷键
QKeySequence("Ctrl+P"); // 构造表示 Ctrl+P 组合键的 QKeySequence 对象
信号
在钮上用鼠标左键或者当钮得到焦点的时候用空格键都能操作这个钮。当钮被按下和松开时,将发射以下信号:
void pressed(); // 钮被按下 void released(); // 钮被松开
void clicked(bool checked = false);
当钮的开关状态变化时,将发射以下信号:
void toggled(bool checked);
槽
下面的两个槽都能够模拟钮被单击的过程:
void click(); void animateclick(int msec = 100);
两者的不同点在于,click 函数不会改变钮的外观,它会直接进行单击的处理过程;而animateClick() 函数将完全模拟用户按下按的过程,参数 msec 就是钮被按下的毫秒数。两者最终都会导致 pressed,released 和 clicked 信号的发射。
下面的槽将导致钮的开关状态发生切换:
void toggle();