问题描述
我有一个 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 (将#修改为@)