2

スタート、ストップ、スタートからの経過時間を返すことができる時計・タイマーを探しています。これらすべてを行うウィジェットはありますか?

どうも

4

2 に答える 2

4

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;    
};
于 2012-08-10T12:54:09.380 に答える
1

この例とクラス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();

お役に立てば幸いです!

于 2012-08-10T13:19:53.247 に答える