2014-10-29 90 views
0

我创建了一个类,称为aTimer,它继承自QTimer。我希望能够将流逝的时间存储到类型为int的变量TimeElapsed中。然后,我想让主窗口打开时计时器自动启动,并显示其中的时间。使用QTimer显示计时器

我想我正在使用错误的定时器,并且我很困惑在Qt中使用哪些工具,因为有不同的处理时间的方法。只要说我想要一个可以手动启动和停止时间的模块(或者使用Timer的时间间隔),就可以使用秒表模块。我应该如何继续?到目前为止,尝试使用QTimer是徒劳的。

回答

1

您并不需要派生类来完成此任务。我可能会使用QTimerQElapsedTimer

在您的主窗口构造函数中创建它们,并根据应该更新时间的频率设置QTimers间隔。同时将其timeout()信号连接到更新显示值的功能。在此功能中,您可以从QElapsedTimer中获取已用时间并更新显示。

// *.h 
QTimer* timer; 
QElapsedTimer *eltimer; 

// *.cpp 
constructor(){ 
    this->timer = new QTimer(this); 
    this->timer->setInterval(1000); 
    connect(this->timer, SIGNAL(timeout()), this, SLOT(update_ui())); 
    this->timer->start(); 

    this->eltimer = new QElapsedTimer(this); 
    this->eltimer->start(); 
} 

SLOT update_ui(){ 
    qint64 msecs_elapsed = this->eltimer->elapsed(); 
    // Insert value into ui object 
} 

当然,你可以创建一些按钮start()stop()QTimer

+0

谢谢!它工作,除了我不想要毫秒,所以我把变量除以1000. – Poriferous 2014-10-29 17:19:16

+0

@Vormeph如果它回答你的问题,别忘了接受答案(参见http://stackoverflow.com/help/someone-answers) 。 – 2014-10-29 20:01:03