递减 QTimer

问题描述

我有一个 QTimer,当我点击一个对象时,我想减少这个 QTimer。为此,我使用 start 函数,如果计时器启动,它允许停止它并使用传入参数的值重新启动它。我的函数被调用,但只要计时器没有达到接近 4100 的值,时间就不会减少。一旦达到(大约)4100,它就可以正常工作,有没有人知道为什么在剩余时间太长时它不起作用?

testclick.h :

#ifndef TESTCLICK_H
#define TESTCLICK_H

#include <QMouseEvent>
#include <QTimer>
#include <QWidget>
#include <QDebug>

class TestClick : public QWidget
{
private :
    QTimer* timer;

public:
    TestClick();
    ~TestClick();

    void mousePressEvent (QMouseEvent* event);
};

#endif // TESTCLICK_H

testclick.cpp:

#include "testclick.h"

TestClick::TestClick()
{
    timer = new QTimer();
    timer->start(8000);
}

TestClick::~TestClick()
{
    delete timer;
}

void TestClick::mousePressEvent(QMouseEvent *event)
{
    qDebug()<<"before remainingTime :"<<timer->remainingTime();
    timer->start(timer->remainingTime() - 200);
    qDebug()<<"after remainingTime :"<<timer->remainingTime();
}

main.cpp :

#include "testclick.h"
#include <QApplication>

int main(int argc,char *argv[])
{
    QApplication a(argc,argv);
    TestClick test;
    test.show();

    return a.exec();
}

我有:

before remainingTime : 5260
after remainingTime : 5260
before remainingTime : 4908
after remainingTime : 4908
before remainingTime : 4780
after remainingTime : 4780
before remainingTime : 4660
after remainingTime : 4660
before remainingTime : 4508
after remainingTime : 4508
before remainingTime : 4348
after remainingTime : 4348
before remainingTime : 4196
after remainingTime : 3996
before remainingTime : 3836
after remainingTime : 3636
before remainingTime : 3476
after remainingTime : 3276
before remainingTime : 3116
after remainingTime : 2916
before remainingTime : 2740
after remainingTime : 2540
before remainingTime : 2380
after remainingTime : 2180
before remainingTime : 2012

我使用 Qt5 和 Debian。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)