我正在寻找一个时钟/计时器,可以启动,停止,并可以返回自启动以来流逝的时间。有没有一个小部件可以做所有这些事情?
Thx
发布于 2012-08-10 20:54:09
您可以使用QTime或QElapsedTimer,但它们不是QObject,因此如果需要能够通过Qt信号启动和停止它们,则需要将它们包装在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-10 21:19:53
请看一下这个例子,还有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();停止计时器
我希望它能帮上忙!
https://stackoverflow.com/questions/11901886
复制相似问题