スタート、ストップ、スタートからの経過時間を返すことができる時計・タイマーを探しています。これらすべてを行うウィジェットはありますか?
どうも
QTime
またはを使用できますQElapsedTimer
が、それらは s ではないため、Qt シグナルを介して開始および停止できるようにする必要がある場合QObject
は、それらをクラスでラップする必要があります。QObject
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;
};
この例とクラス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();
お役に立てば幸いです!