1
A
回答
3
您可以使用QTime
或QElapsedTimer
,但他們不是QObject
S,所以你需要來包裝他們在一個QObject
類,如果你需要能夠通過Qt的信號來啓動和停止它們。
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;
};
0
請看看下面這個例子,並在類QTimer
//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
}
};
在主應用程序:
Timer * timer = new Timer(this);
timer->setInterval(1000);
timer->start();
這將創建一個Timer對象,設置其時間間隔到1秒,然後啓動它。您可以根據需要將盡可能多的插槽連接到timeout()信號,也可以創建自定義信號。您可以通過timer->stop();
停止定時器,我希望它能幫上忙!
+1
對於我來說,這比QTime/QElapsedTimer方法更復雜,也不太準確(不能保證在間隔()後精確調用計時器插槽 - 例如,如果另一個事件處理程序需要很長時間)。 – 2012-08-10 13:26:36
相關問題
- 1. Python和BS4 - 經過一定時間後停止閱讀
- 2. 給定時間的停止時間表
- 3. Android定時器停止並開始
- 4. C#定時器間歇性停止
- 5. 使用開始,在經過時間停止的.Net計時器事件
- 6. 設置DataGridView.FirstDisplayedScrollingRowIndex停止發射定時器?
- 7. 定時器C#停止()並不真正停止
- 8. QT - 懸停QLabel時發出信號
- 9. 定時器C#。啓動,停止,並得到調用之間的時間量
- 10. PHP經過的時間在一定時間後發生變化
- 11. 我怎樣才能申報許多定時器和停止時,時間已經過期
- 12. LibGDX停止時間計數器暫停
- 13. 經過一段時間Python腳本停止
- 14. Javascript定時器不停止
- 15. 定時器不停止
- 16. 定時器不會停止?
- 17. SetTimeout。停止定時器
- 18. Java定時器在特定時間停止進程
- 19. 定時器將在特定時間停止
- 20. Python:時間方法調用,並在超過時間時停止它
- 21. 如何在java上以一定間隔停止計時器
- 22. 添加經過時間的可可
- 23. 如何在定時器停止時停止剩餘動作?
- 24. 以編程方式暫停/停止MediaPlayer Android在給定時間
- 25. Oracle:停止觸發一段時間
- 26. 在Visual Studio 2013中的特定時間停止計時器
- 27. Java如何獲取定時器停止的時間?
- 28. 停止計時器在asp.net C#預定時間
- 29. 如何暫停和恢復升壓截止時間定時器?
- 30. 如何在一定時間後停止計時器?
我該怎麼做?我是否需要創建一個繼承qelapsed時間並定義stop()函數的新類? – Frank 2012-08-10 13:07:33
我會遵循「繼承的組合」規則,並使QElapsedTimer成爲基於QObject的包裝的成員。如果你需要的話 - 我沒有看到你的問題直接需要。 – 2012-08-10 13:27:58
我很抱歉,但我沒有明白你的意思。你能舉一個例子說明我能如何以這種方式阻止QElapsedTimer? – Frank 2012-08-10 13:58:38