首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以停止并发出已用时间的计时器,单位为qt

可以停止并发出已用时间的计时器,单位为qt
EN

Stack Overflow用户
提问于 2012-08-10 20:41:36
回答 2查看 3.5K关注 0票数 2

我正在寻找一个时钟/计时器,可以启动,停止,并可以返回自启动以来流逝的时间。有没有一个小部件可以做所有这些事情?

Thx

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-10 20:54:09

您可以使用QTimeQElapsedTimer,但它们不是QObject,因此如果需要能够通过Qt信号启动和停止它们,则需要将它们包装在QObject类中。

代码语言:javascript
复制
class Timer : public QObject {
    Q_OBJECT
public:
    explicit Timer(QObject *parent = 0): QObject(parent) {}    
public slots:
    void start() {
        time.start();
    }
    void stop() {
        emit elapsed(time.elapsed());
    }
signals:
    void elapsed(int msec);
private:
    QTime time;    
};
票数 4
EN

Stack Overflow用户

发布于 2012-08-10 21:19:53

请看一下这个例子,还有QTimer

代码语言:javascript
复制
//This class will inherit from QTimer
class Timer : public QTimer
{
    //We will count all the time, that passed in miliseconds
    long timePassed;

    Q_OBJECT

    public:

    explicit Timer(QObject *parent = 0) : QTimer(parent)
    {
        timePassed = 0;
        connect(this, SIGNAL(timeout()), this, SLOT(tick()));
    }
    private slots:

    //this slot will be connected with the Timers timeout() signal.
    //after you start the timer, the timeout signal will be fired every time,
    //when the amount interval() time passed.
    void tick()
    {
        timePassed+=interval(); //we increase the time passed
        qDebug()<<timePassed; //and debug our collected time
    }
};

在您的主应用程序中:

代码语言:javascript
复制
Timer * timer = new Timer(this);
timer->setInterval(1000);
timer->start();

这将创建一个Timer对象,将其间隔设置为1秒,然后启动它。您可以根据需要将任意多个插槽连接到timeout()信号,也可以创建自定义信号。你可以通过timer->stop();停止计时器

我希望它能帮上忙!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11901886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档