【问题标题】:How to pause and restart the Qtimer on QT如何在 QT 上暂停和重启 Qtimer
【发布时间】:2016-03-04 11:13:18
【问题描述】:

我有一个 Ubuntu,我正在使用 IDE QTC++ 上工作。 我将暂停和恢复 Qtimer,例如:

void Ordonnancer_les_taches::on_pushButton_clicked()
{

    connect(&dataTimer, SIGNAL(timeout()), this, SLOT(l_odonnancement()));
    dataTimer.start(5000);
}

如何Pause 以及如何Restart ? 举个例子

【问题讨论】:

  • 阅读manual
  • @SławomirDubiel 请给我一个例子

标签: c++ qt signals-slots qtimer


【解决方案1】:

由于没有专门的方法来实现这种行为,你可以做这样的事情(你可以将它移动到一个子类 PausableTime 左右):

void pause() {
    int remaining = dataTimer.remainingTime();
    dataTimer.stop();
    dataTimer.setInterval(remaining);
}

void resume() {
    dataTimer.start();
}

当然,您需要再次调整超时槽中的时间间隔。

【讨论】:

  • @StackTok 要暂停,请按照此答案中的说明进行操作。停止呼叫QTimer::stop。要重新启动,只需致电QTimer::start
  • @StackTok 是什么意思,二加二?
  • @thuga 例如,我这样做:dataTimer.start(1000); .系统依次执行 1 -> 2 -> 3 >4 ......如果我停止并启动:系统执行 1 > 4 > 6 > 8> ...
  • @StackTok 1->2->3->4 这些数字是多少?它们是否经过了几秒钟?
  • @StackTok 我想我明白发生了什么。您正在增加 l_odonnancement 插槽中的一些值。问题是您每次单击按钮时都将计时器的timeout 信号连接到该插槽。要么将它连接到其他地方(比如在你的类的构造函数中),这就是我要做的,或者使用Qt::UniqueConnection
猜你喜欢
  • 1970-01-01
  • 2012-01-22
  • 2020-04-26
  • 1970-01-01
  • 1970-01-01
  • 2012-08-26
  • 1970-01-01
  • 2016-05-24
相关资源
最近更新 更多