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 制作计时器的主要内容,如果未能解决你的问题,请参考以下文章
使用 processEvents() 更新 QLCDNumber - Python 3
QT软件开发之基础控件--2.5.3 QLCDNumber 数码管控件