其中最常用的是 clicked(), 通过鼠标的不同瞬间状态可以发射出pressed() 和 released() 信号, 如果鼠标设置了 check属性, 一般通过 toggled()信号判断当前按钮是选中状态还是非选中状态。
/* 当按钮被激活时(即,当鼠标光标在按钮内时按下然后释放),当键入快捷键时,或者当click()或animateClick()被调用时,这个信号被发出。值得注意的是,如果调用setDown()、setChecked()或toggle(),则不会触发此信号。 */ [signal] void QAbstractButton::clicked(bool checked = false); // 在按下按钮的时候发射这个信号 [signal] void QAbstractButton::pressed(); // 在释放这个按钮的时候发射直观信号 [signal] void QAbstractButton::released(); // 每当可检查按钮改变其状态时,就会发出此信号。checked在选中按钮时为true,在未选中按钮时为false。 [signal] void QAbstractButton::toggled(bool checked);
// 执行一个动画点击:按钮被立即按下,并在毫秒后释放(默认是100毫秒)。 [slot] void QAbstractButton::animateClick(int msec = 100); // 执行一次按钮点击, 相当于使用鼠标点击了按钮 [slot] void QAbstractButton::click(); // 切换可检查按钮的状态。 checked <==> unchecked [slot] void QAbstractButton::toggle(); // 参考 1.2 中的函数介绍 [slot] void QAbstractButton::setChecked(bool); // 设置按钮上图标大小 [slot]void setIconSize(const QSize &size);
// 参数text的内容显示到按钮上 void QAbstractButton::setText(const QString &text); // 得到按钮上显示的文本内容, 函数的返回就是 QString QAbstractButton::text() const; // 得到按钮设置的图标 QIcon icon() const; // 给按钮设置图标 void setIcon(const QIcon &icon); // 得到按钮图标大小 QSize iconSize() const // 设置按钮图标的大小 [slot]void setIconSize(const QSize &size);
demo
#include "mainwindow.h" #include "ui_mainwindow.h" #include "QIcon" #include "QSize" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) {
ui->setupUi(this); this->ui->p1->setText("hello"); this->ui->p1->setIcon(QIcon("C://Users//DYF//Pictures//Camera Roll//a.png")); this->ui->p1->setIconSize(QSize(30,30)); } MainWindow::~MainWindow() {
delete ui; }
对应按钮来说, 一般有三种常见状态, 分别为: Normal, Hover, Pressed。
默认情况下, 鼠标在按钮上按下, 按钮从 Normal 切换到 Pressed状态, 鼠标释放, 按钮从 Pressed恢复到Normal状态。
当我们给按钮设置了 check 属性之后,情况就有所不同了, 在按钮上释放鼠标键, 按钮依然会处在 Pressed状态, 再次点击按钮, 按钮才能恢复到 Normal 状态。具有check属性的按钮就相当于一个开关, 每点击一次才能实现一次状态的切换。
// 判断按钮是否设置了checkable属性, 如果设置了点击按钮, 按钮一直处于选中状态 // 默认这个属性是关闭的, not checkable bool QAbstractButton::isCheckable() const; // 设置按钮的checkable属性 // 参数为true: 点击按钮, 按钮被选中, 松开鼠标, 按钮不弹起 // 参数为false: 点击按钮, 按钮被选中, 松开鼠标, 按钮弹起 void QAbstractButton::setCheckable(bool); // 判断按钮是不是被按下的选中状态 bool QAbstractButton::isChecked() const; // 设置按钮的选中状态: true-选中, false-没选中 // 设置该属性前, 必须先进行 checkable属性的设置 void QAbstractButton::setChecked(bool);