【问题标题】:Dynamic clock in C++ [closed]C ++中的动态时钟[关闭]
【发布时间】:2020-06-19 02:58:14
【问题描述】:

我想在我的 C++ 程序中实现一个动态时钟,它不仅会显示程序启动的当前时间,而且还会在程序运行时保持滴答作响。有没有一种简单的方法可以做到这一点?执行此操作时程序也不应该陷入循环,因为时钟只是其他功能之一。 我想到的是使用观察者模式,但如果有更简单的方法,我会很感激,因为我正在努力使用这种模式。

【问题讨论】:

  • std::chrono 不适合您的用例的任何原因。你能给出你期望发生的事情的伪代码吗?
  • 一个每秒调用你的时钟几次的操作系统计时器怎么样。然后您的时钟可以检查时间,如果它自上次通话后发生变化,您将更新时钟 UI。
  • 我确实使用 std::chrono 来显示时间,但我希望它是动态的。所以,当我运行我的程序时,我想看到秒数滴答作响。不幸的是,我不能使用显示时间并每秒清除屏幕的循环,因为这意味着我的程序被卡住并且无法执行其他功能。
  • 所以基本上你想知道如何一次做不止一件事。您在哪里显示时钟 - 在控制台中?
  • 你知道Qt: Digital Clock Example吗?还有一个模拟变体:Qt: Analog Clock Example。 ;-)

标签: c++ qt dynamic clock


【解决方案1】:
{
 QTimer *timer = new QTimer(this);
 connect(timer, SIGNAL(timeout()), this, SLOT(onEverySecond()));
 timer->start(1000);
}

void Foo::onEverySecond()
{
  //do fancy stuff
}

【讨论】:

  • 太好了,谢谢!不得不稍微改变一下connect语句中的SIGNAL:connect(timer, SIGNAL(timeout()), this, SLOT(onEverySecond()));
【解决方案2】:

如果你使用前面提到的 qt。最好使用新的信号槽语法:

QTimer *timer = new QTimer(this);
connect(timer, &QTimer::timeout, this, &ThisClassName::onEverySecond);
timer->start(1000);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 2010-10-28
    • 1970-01-01
    • 2019-06-09
    相关资源
    最近更新 更多