我是一名新手学习Qt C++,但从我在网上找到的少量资源中,没有办法提取我需要添加倒计时计时器的部分。我不想添加任何按钮或其他功能,只需要一个计时器从1:00开始计时并递减直到达到0:00,此时我需要显示某种消息,告诉用户时间已经用完。我认为将一个标签添加到窗体以显示计时器可能是一种简单的方法(但我现在不确定是否正确)。
到目前为止,我创建了一个新的Qt应用程序项目,在我的主窗体中添加了一个标签,并从http://doc.qt.io/archives/qt-4.8/timers.html中获取了一些计时器代码添加到mainwindow.cpp中。
在mainwindow.h文件中,我添加了一个公共属性
但是我不确定接下来该怎么做。我认为下一步应该是每秒减少计时器并在“倒计时”标签上显示(这将在updateCountdown槽中完成),但我找不到方法。 我也不确定如何在倒计时到0:00时触发消息(可能在QFrame上)。
到目前为止,我创建了一个新的Qt应用程序项目,在我的主窗体中添加了一个标签,并从http://doc.qt.io/archives/qt-4.8/timers.html中获取了一些计时器代码添加到mainwindow.cpp中。
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//Initialize "countdown" label text
ui->countdown->setText("1:00");
//Connect timer to slot so it gets updated
timer = new QTimer();
connect(timer, SIGNAL(timeout()), this, SLOT(updateCountdown()));
//It is started with a value of 1000 milliseconds, indicating that it will time out every second.
timer->start(1000);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::updateCountdown()
{
//do something along the lines of ui->countdown->setText(....);
}
在mainwindow.h文件中,我添加了一个公共属性
QTimer *timer;
,同时添加了一个私有槽void updateCountdown();
。但是我不确定接下来该怎么做。我认为下一步应该是每秒减少计时器并在“倒计时”标签上显示(这将在updateCountdown槽中完成),但我找不到方法。 我也不确定如何在倒计时到0:00时触发消息(可能在QFrame上)。
QTime *time = new QTime(0, 1, 0)
作为公共属性(以及我已经拥有的QTimer *timer
)。在cpp文件中,我在updateCountdown()槽中添加了这两行代码:time->addSecs(-1); ui->countdown->setText(time->toString("m:ss"));
。似乎我漏掉了什么,因为似乎什么都没有发生。我还尝试过只在头文件中声明一个QTime* time
,然后在cpp文件中使用time = new QTime(0, 1, 0);
。我还没有尝试“当它到达0:00”的部分。 - Floellatime->toString("m:ss")
来检查是否每秒实际调用了updateCountdown()
。如果它被调用并且输出正确,那么可能是 UI 没有正确更新。 - Lucas MotaQTime time
对象,然后在MainWindow构造函数中使用time.setHMS(0,1,0)
进行初始化。然后,像@LucasMota所说的那样,在我的updateCountdown()插槽中调用time=time.addSecs(-1)
和ui->countdown->setText(time.toString("m:ss"))
。我还将标签初始化更改为在MainWindow构造函数中的ui->countdown->setText(time.toString("m:ss"))
。谢谢。 - Floella