Qt 使用 QLCDNumber 制作计时器

Posted

技术标签:

【中文标题】Qt 使用 QLCDNumber 制作计时器【英文标题】:Qt Making a Timer using QLCDNumber 【发布时间】:2013-09-20 10:12:27 【问题描述】:

我正在尝试使用 QLCDNumber 制作两个计时器。这些计时器将作为我的状态栏的一部分在 dll 中生成。我有两个 LCDNumber 显示器。 lcdNumber1 将在指定时间开始(例如 12:00:00)。 lcdNumber2 将从 0 开始(例如 00:00:00)。

如何为 lcdNumber2 创建一个计时器并让它开始计时?

如何将 lcdNumber2 的计时器添加到 lcdNumber1?或者我可以为 lcdNumber1 创建一个计时器以从指定时间开始计时?

有人可以帮忙吗?

QLCDNumber *lcdNumber1 = new QLCDNumber;
lcdNumber1->setNumDigits(8);
lcdNumber1->display(12:00:00);
statusBar->addWidget(lcdNumber1);

QLCDNumber *lcdNumber2 = new QLCDNumber;
lcdNumber2->setNumDigits(8);
lcdNumber2->display(00:00:00);
statusBar->addWidget(lcdNumber2);

【问题讨论】:

【参考方案1】:

继承 QLCDNumber 添加可变时间来保存当前时间和另一个槽 tick()

QLCDNumber_my::tick()
   time++;
   this->display(time);

然后

QLCDNumber_my *lcdNumber1 = new QLCDNumber_my;
lcdNumber1->setNumDigits(8);
lcdNumber1->display(12:00:00);
statusBar->addWidget(lcdNumber1);
QTimer *timer = new QTimer(this);
timer->start(1000);
connect(timer, SIGNAL(timeout()), lcdNumber1, SLOT(tick()));

QLCDNumber 是简单的显示小部件,它不能运行,要产生时间变化需要使用单独的计时器(QTimer)。

【讨论】:

感谢您的帮助。变量 'time' 是一个未声明的标识符,而 'display' 不是 StatusBar 的成员。我必须在 .cpp 或 .h 文件中声明任何内容吗?我在状态栏上实现了这个 LCDNumber,因此我声明从我的 .h 中的 QStatusBar 继承。我也必须从 QLCDNumber 继承吗?:class StatusBar : public QStatusBar 如果我想点击 QPushButton 来激活这个计时器,我该怎么做呢? 变量“时间”应声明为您的类的私有成员,并在构造函数中使用值进行初始化。在您的代码中,您继承 QLCDNumber 而不是 LCDNumber,无论如何,只需将新方法和新变量 time 添加到继承的类中。要从按钮开始,请阅读signals and slots。

以上是关于Qt 使用 QLCDNumber 制作计时器的主要内容,如果未能解决你的问题,请参考以下文章

QT定时器

使用 processEvents() 更新 QLCDNumber - Python 3

QT软件开发之基础控件--2.5.3 QLCDNumber 数码管控件

Qt5中用QLCDNumber显示时间

Qt入门系列开发教程基础控件篇QLCDNumber数码管类型控件

QT5-控件-QLabel和QLCDNumber-标签显示图片或者视频,LCD用于上位机不错