【问题标题】:Qt Making a Timer using QLCDNumberQt 使用 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);

【问题讨论】:

    标签: qt timer


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    相关资源
    最近更新 更多