QAbstractButton成员函数功能和使用详细说明(文字+用例+代码+效果图)
通过简洁的用例代码、用例运行效果动图、详细注释说明QAbstractButton类的各个成员函数包括信号、槽函数的功能和调用方法
文章目录
- 1.测试工程配置
- 2. 成员函数
-
- 2.1 void setText(const QString &text)
- 2.2 void setIcon(const QIcon &icon)
- 2.3 槽函数 void setIconSize(const QSize &size)
- 2.4 void setDown(bool)
- 2.5 void setCheckable(bool)
- 2.6 void setAutoRepeat(bool)
- 2.7 void setAutoRepeatDelay(int)
- 2.8 void setAutoRepeatInterval(int)
- 2.9 void setAutoExclusive(bool)
- 2.10 void setShortcut(const QKeySequence &key)
- 2.11 QString text() const
- 2.12 QKeySequence shortcut() const
- 2.13 bool isDown() const
- 2.14 bool isChecked() const
- 2.15 bool isCheckable() const
- 2.16 QSize iconSize() const
- 2.17 QIcon icon() const
- 2.18 QButtonGroup * group() const
- 2.19 bool autoRepeat() const
- 2.20 int autoRepeatDelay() const
- 2.21 int autoRepeatInterval() const
- 2.22 bool autoExclusive() const
- 2.23 槽函数 void animateClick(int msec = 100)
- 2.24 槽函数 void click()
- 2.25 槽函数 void toggle()
- 2.26 槽函数 void setChecked(bool)
- 2.27 信号 void pressed()
- 2.28 信号 void released()
- 2.29 信号 void toggled(bool checked)
- 2.30 信号 void clicked(bool checked = false)
1.测试工程配置
创建名为QtGuiAppTest的qwidget工程,带ui文件
2. 成员函数
由于QAbstractButton为抽象类,无法实例化,因此用例中选用QAbstractButton的一个子类QPushButton实现。
2.1 void setText(const QString &text)
(1)功能说明
设置按钮上的文字。
(2)效果展示
(3)调用程序
QtGuiAppTest::QtGuiAppTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
ui.pushButton->setText(QString::fromLocal8Bit("测试按钮"));
}
2.2 void setIcon(const QIcon &icon)
(1)功能说明
给按钮添加图标。
(2)效果展示
(3)调用程序
QtGuiAppTest::QtGuiAppTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
ui.pushButton->setIcon(QIcon(":/Resources/980.jpg"));
}
先在qrc文件中添加图片资源。
2.3 槽函数 void setIconSize(const QSize &size)
(1)功能说明
设置按钮的图标大小。
(2)效果展示
(3)调用程序
QtGuiAppTest::QtGuiAppTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
//添加图标
ui.pushButton->setIcon(QIcon(":/Resources/980.jpg"));
//设置图标大小
ui.pushButton->setIconSize(QSize(40, 60));
}
2.4 void setDown(bool)
(1)功能说明
默认为false,如果传参为true,则将按钮设置为按下的状态。在这种情况下,按钮是不会发出pressed()和 clicked()信号的。
(2)效果展示
(3)调用程序
QtGuiAppTest::QtGuiAppTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
ui.pushButton->setDown(true);
}
2.5 void setCheckable(bool)
(1)功能说明
默认参数为false,传入true,将按钮设置为可勾选的(即点击一次,按钮一致处于按下状态,除非再次点击才会弹出)。
(2)效果展示
(3)调用程序
QtGuiAppTest::QtGuiAppTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
ui.pushButton->setCheckable(true);
}
2.6 void setAutoRepeat(bool)
(1)功能说明
默认置为false。如果设置为true,则当按钮被按下后, pressed(), released(), 和 clicked()信号会在指定的时间间隔重复发出。初始延迟和重复间隔时间单位都是毫秒,初始延迟由 autoRepeatDelay设置,重复时间间隔由autoRepeatInterval设置。
(2)效果展示
设置了开始延迟1秒,重复间隔为2秒,可以看到label中的文本在按钮按下1秒后开始变化,之后每隔2秒变化一次。
(3)调用程序
QtGuiAppTest::QtGuiAppTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
m_nCount = 0;
//启用重复发送信号机制
ui.pushButton->setAutoRepeat(true);
//设置开始发信号前的时间延迟
ui.pushButton->setAutoRepeatDelay(1000);
//设置重复信号之间的时间间隔
ui.pushButton->setAutoRepeatInterval(2000);
connect(ui.pushButton, &QPushButton::clicked, this, &QtGuiAppTest::SlotTest);
}
void QtGuiAppTest::SlotTest()
{
m_nCount++;
ui.label->setText("number:" + QString::number(m_nCount));
}
2.7 void setAutoRepeatDelay(int)
参考第2.6节。
2.8 void setAutoRepeatInterval(int)
参考第2.6节。
2.9 void setAutoExclusive(bool)
(1)功能说明
同一个窗口多个可勾选按钮的行为如同在同一个独占按钮组中。在同一个独占按钮组中只有一个按钮可以处于被选中(按下)的状态,选中另一个按钮,则前一个被选中的就会自动取消选中状态。
(2)效果展示
(3)调用程序
QtGuiAppTest::QtGuiAppTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
ui.pushButton->setCheckable(true);
ui.pushButton->setAutoExclusive(true);
ui.pushButton_2->setCheckable(true);
ui.pushButton_2->setAutoExclusive(true);
ui.pushButton_3->setCheckable(true);
ui.pushButton_3->setAutoExclusive(true);
}
2.10 void setShortcut(const QKeySequence &key)
(1)功能说明
给按钮设置快捷键。
(2)效果展示
给按钮设置了ctrl+B的快捷键,按下快捷键显示弹窗。
(3)调用程序
#include "QtGuiAppTest.h"
#include<qmessagebox.h>
QtGuiAppTest::QtGuiAppTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
ui.pushButton->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_B));
connect(ui.pushButton, &QPushButton::clicked, this, &QtGuiAppTest::SlotTest);
}
void QtGuiAppTest::SlotTest()
{
QMessageBox::information(this, "test", "shortcut");
}
2.11 QString text() const
获取给按钮上添加的文本。
2.12 QKeySequence shortcut() const
获取给按钮添加的快捷键。
2.13 bool isDown() const
判断按钮是否按下的状态,如果按钮处于按下的状态,则返回的是true。
2.14 bool isChecked() const
判断按钮是否被选中,只有按钮设置了checkable,该函数才有效。
2.15 bool isCheckable() const
判断按钮是否被设置为了可勾选。
2.16 QSize iconSize() const
获取按钮上图标的大小。
2.17 QIcon icon() const
获取按钮上的图标。
2.18 QButtonGroup * group() const
返回按钮所属的组,如果按钮不属于任何组,则返回nullptr。
2.19 bool autoRepeat() const
判断按钮是否设置了可重复触发信号。
2.20 int autoRepeatDelay() const
获取触发信号之前的时间延迟。
2.21 int autoRepeatInterval() const
获取信号重复发信号的时间间隔。
2.22 bool autoExclusive() const
判断按钮是否设置为独占模式。
2.23 槽函数 void animateClick(int msec = 100)
(1)功能说明
设置按钮按下msec毫秒
(2)效果展示
点击第一个按钮,触发第二个按钮按下2秒
(3)调用程序
QtGuiAppTest.h
#pragma once
#include <QtWidgets/QWidget>
#include "ui_QtGuiAppTest.h"
class QtGuiAppTest : public QWidget
{
Q_OBJECT
public:
QtGuiAppTest(QWidget *parent = Q_NULLPTR);
public slots:
void SlotTest1();
signals:
void SigBtnReleaseDelay(double ms);
private:
Ui::QtGuiAppTestClass ui;
};
QtGuiAppTest.cpp
#include "QtGuiAppTest.h"
QtGuiAppTest::QtGuiAppTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
//第一个按钮点击信号与槽函数SlotTest1连接
connect(ui.pushButton, &QPushButton::clicked, this, &QtGuiAppTest::SlotTest1);
//信号SigBtnReleaseDelay与第二个按钮的animateClick槽函数连接
connect(this, &QtGuiAppTest::SigBtnReleaseDelay, ui.pushButton_2, &QPushButton::animateClick);
}
void QtGuiAppTest::SlotTest1()
{
//输出SigBtnReleaseDelay信号,并填写参数2000毫秒
emit SigBtnReleaseDelay(2000);
}
2.24 槽函数 void click()
该槽函数执行按钮点击操作,且与按钮点击关联的信号都会发出去。如果这个按钮是可勾选的(checkable),则该函数执行后表现为按钮状态改变。
2.25 槽函数 void toggle()
(1)功能说明
切换按钮按下和弹出的状态
(2)效果展示
(3)调用程序
QtGuiAppTest.h
#pragma once
#include <QtWidgets/QWidget>
#include "ui_QtGuiAppTest.h"
class QtGuiAppTest : public QWidget
{
Q_OBJECT
public:
QtGuiAppTest(QWidget *parent = Q_NULLPTR);
public slots:
void SlotTest1();
signals:
void SigBtnToggle();
private:
Ui::QtGuiAppTestClass ui;
};
QtGuiAppTest.cpp
#include "QtGuiAppTest.h"
QtGuiAppTest::QtGuiAppTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
//设置按钮2为可选的
ui.pushButton_2->setCheckable(true);
connect(ui.pushButton, &QPushButton::clicked, this, &QtGuiAppTest::SlotTest1);
connect(this, &QtGuiAppTest::SigBtnToggle, ui.pushButton_2, &QPushButton::toggle);
}
void QtGuiAppTest::SlotTest1()
{
emit SigBtnToggle();
}
2.26 槽函数 void setChecked(bool)
(1)功能说明
设置按钮被按下。前提是按钮通过setCheckable(bool)设置为可勾选,该槽函数才生效
(2)效果展示
点击第一个按钮,第二个按钮被按下
(3)调用程序
QtGuiAppTest.h
#pragma once
#include <QtWidgets/QWidget>
#include "ui_QtGuiAppTest.h"
class QtGuiAppTest : public QWidget
{
Q_OBJECT
public:
QtGuiAppTest(QWidget *parent = Q_NULLPTR);
public slots:
void SlotTest1();
signals:
void SigBtnCheck(bool ck);
private:
Ui::QtGuiAppTestClass ui;
};
QtGuiAppTest.cpp
#include "QtGuiAppTest.h"
QtGuiAppTest::QtGuiAppTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
//设置按钮2为可选的
ui.pushButton_2->setCheckable(true);
connect(ui.pushButton, &QPushButton::clicked, this, &QtGuiAppTest::SlotTest1);
connect(this, &QtGuiAppTest::SigBtnCheck, ui.pushButton_2, &QPushButton::setChecked);
}
void QtGuiAppTest::SlotTest1()
{
emit SigBtnCheck(true);
}
2.27 信号 void pressed()
按钮按下会发出该信号
2.28 信号 void released()
按钮弹出会发出该信号
2.29 信号 void toggled(bool checked)
按钮状态切换会发出该信号
2.30 信号 void clicked(bool checked = false)
当click()或animateClick()被调用或键入快捷键,按钮发出该信号。如果调用了setDown(), setChecked(),toggle(),则信号不会发出。
更多推荐


所有评论(0)