Qt:自定义一个倒计时跳转按钮

本文介绍了一种实现倒计时功能的QPushButton子类CountDown,该组件在HorizontalLayout中包含两个QLabel,用于显示倒计时数字和返回图标。CountDown类通过QTimer实现倒计时更新,并提供了点击返回的功能。当倒计时结束或按钮被点击时,会发出sigReturn信号。此组件可用于其他界面的跳转操作。
摘要由CSDN通过智能技术生成

一、实现功能

1、倒计时结束跳转

2、作为按钮本身支持点击返回

二、控件设计

1、QWidget类的一个Horizontal Layout中添加两个Qlabel类的文本框控件,这两个文本框一个用来显示倒计时的数字,一个用来插入一个返回图标,如下图所示:

三、源代码

1、编写.h文件,这里的CountDown类申明为QPushButton类的子类,故支持点击操作,还声明了一个QTimer类的对象作为私有成员,作为定时器来触发秒数倒计时功能的槽函数

#ifndef COUNTDOWN_H
#define COUNTDOWN_H

#include <QPushButton>
#include <QTimer>

typedef enum _COUNTDOWN_TIMEOUT_
{
    COUNTDOWN_NormalDefault     = 30,   //默认30s
}EnumCountDownTimeOut;

namespace Ui {
    class CountDown;
}

class CountDown : public QPushButton
{
    Q_OBJECT

public:
    explicit CountDown(QWidget *parent);
    ~CountDown();
    void init(int count);

private Q_SLOTS:
    void countDownUpdate(void);
    void clickReturn(bool click);

Q_SIGNALS:
    void sigReturn(bool timeout=true);

private:
    Ui::CountDown *ui;
    int _countDown;
    int _defaultCount;
    QTimer *timer;
};

#endif // COUNTDOWN_H

2、编写.cpp文件 ,包含具体倒计时功能的实现,以及触发跳转界面信号的实现,相关信号与槽的连接

#include "CountDown.h"
#include "ui_CountDown.h"

CountDown::CountDown(QWidget *parent) :
    QPushButton(parent),
    ui(new Ui::CountDown)
{
    ui->setupUi(this);
    timer = new QTimer();
    connect(timer, SIGNAL(timeout()), this, SLOT(countDownUpdate()), Qt::QueuedConnection);
    connect(this, SIGNAL(clicked(bool)), this, SLOT(clickReturn(bool)), Qt::QueuedConnection);
}

CountDown::~CountDown()
{
    delete ui;
}

void CountDown::init(int count)
{
    ui->labelCount->setText(QString::number(count));
    _defaultCount = count;
    _countDown = count;
    timer->start(1000);
}

void CountDown::countDownUpdate(void)
{
    _countDown--;
    if(_countDown < 0){
        _countDown = 0;
        timer->stop();
        emit sigReturn();
    }
    ui->labelCount->setText(QString::number(_countDown));
}

void CountDown::clickReturn(bool click)
{
    timer->stop();
    emit sigReturn(false);
}

四、总结

      最终就完成了一个倒计时插件供其他界面进行使用,这里倒计时插件由于继承于QPushButton类,所以其本身是个按钮框,除了支持倒计时跳转同样支持点击按钮的方式来跳转。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值