Qt 自定义控件 定时器

   日期:2020-05-18     浏览:114    评论:0    
核心提示:参考文章:https://blog.csdn.net/anyuliuxing/article/details/96604213概述:实现一个定时器控件,右键直接转到槽函数.使用非常方便.核心步骤:1.在 .h 文件自定义定义一个信号,参考官方控件写法.Qtcreator会自动显示2.New 一个默认启动的Qtimer ,把信号连接到一个函数,在函数里面调用自定义的信号就好.代码示例:/*定时器控件 Qt 5.14.2简介: 1.实现界面右键转到槽就自动生成定时器回调ui

参考文章:https://blog.csdn.net/anyuliuxing/article/details/96604213

概述:

实现一个定时器控件,右键直接转到槽函数.使用非常方便.

核心步骤:

1.在 .h 文件自定义定义一个信号,参考官方控件写法.Qtcreator会自动显示

2.New 一个默认启动的Qtimer ,把信号连接到一个函数,在函数里面调用自定义的信号就好.

代码示例:



#ifndef CTIMER_H
#define CTIMER_H

#include <QWidget>

namespace Ui {
class Ctimer;
}

class Ctimer :public QWidget
{
    Q_OBJECT
    Q_PROPERTY(int timerInterval READ getInterval WRITE setInterval)
    Q_PROPERTY(bool timerEnable READ getEnable WRITE setEnable)
    Q_PROPERTY(QString timerName READ getName WRITE setName)

    Q_SIGNALS:                                    //定义此宏Qt creator右键转到槽会出现
    void    onTimer();

public slots:
    void    timerCallBack();

public:
    explicit Ctimer(QWidget *parent = nullptr);
    ~Ctimer();

    QTimer  *m_timer;
    int     timerInterval=1000;
    bool    timerEnable=1;
    QString timerName="没有名字";

    int     getInterval(){return timerInterval;};
    bool    getEnable(){return timerEnable;};
    QString getName(){return timerName;};

    void    setInterval(int _interval);
    void    setEnable(bool _enable);
    void    setName(QString _name);

    QSize   sizeHint() const override;              //控件缺省大小

private:
    Ui::Ctimer *ui;
};

#endif // CTIMER_H
#include "ctimer.h"
#include "ui_ctimer.h"
#include <QTimer>
#include <QStyleOption>
#include <QPainter>

Ctimer::Ctimer(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Ctimer)
{
    ui->setupUi(this);
    m_timer=new QTimer(this);
    connect(m_timer,&QTimer::timeout,this,&Ctimer::timerCallBack);
    m_timer->start(timerInterval);
}

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

void Ctimer::setInterval(int _interval)
{
    timerInterval=_interval;
    m_timer->setInterval(timerInterval);
}

void Ctimer::setEnable(bool _enable)
{
    timerEnable=_enable;
    timerEnable?m_timer->start(timerInterval):m_timer->stop();
}

void Ctimer::setName(QString _name)
{
    timerName=_name;
}

void Ctimer::timerCallBack()
{
    onTimer();
}

QSize Ctimer::sizeHint() const
{
    return QSize(36,36);
}

效果展示:

 
标签: 文章标签: qt c++
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服