网站怎么做团购,织梦网站可以微信登录吗,上海有做网站的公司么,网站建设求职简历模板【 声明#xff1a;版权所有#xff0c;欢迎转载#xff0c;请勿用于商业用途。 联系信箱#xff1a;feixiaoxing 163.com】 倒计时软件是生活中经常遇到的一种场景。比如运动跑步#xff0c;比如学校考试#xff0c;比如论文答辩等等#xff0c;只要有时间限制规定的地…【 声明版权所有欢迎转载请勿用于商业用途。 联系信箱feixiaoxing 163.com】 倒计时软件是生活中经常遇到的一种场景。比如运动跑步比如学校考试比如论文答辩等等只要有时间限制规定的地方我们都会遇到倒计时的一些设备。目前在电商网站上面可以找到很多这类的倒计时工具不过既然我们学习了QT平台那么完全可以用它来实现一个简单的倒计时软件。 为了简单演示一下我们设计了AA:BB的形式其中AA代表分钟BB代表秒。启动之后每隔1sBB会递减1如果不够就会从AA借数。等到AA和BB变成00之后会有一个弹窗弹出来。整个逻辑就是这么一个过程。 1、设计界面 界面部分前面也说过就是使用AA:BB的部分来完成的。所以为了方便就直接用qt designer来设计即可 截图上来看中间显示部分字体偏小。不过没有关系这部分后期可以通过编码的方法来进行解决。 2、QtWidgetsApplication1.h中添加变量和回调函数 所谓变量主要就是定时器和初始值。而回调函数则是每次定时器调用的子函数。这部分和之前的按钮回调函数一样也是槽函数所以也会多一个关键字slots。此外我们把字符的更新动作也单独设计成了一个函数display_number。
#pragma once#include QtWidgets/QMainWindow
#include QTimer
#include ui_QtWidgetsApplication1.hclass QtWidgetsApplication1 : public QMainWindow
{Q_OBJECTpublic:QtWidgetsApplication1(QWidget *parent nullptr);~QtWidgetsApplication1();private:Ui::QtWidgetsApplication1Class ui;QTimer* p_timer;int total;void display_number();private slots:void update();
};3、QtWidgetsApplication1.cpp功能实现 要实现倒计时的功能首先肯定要初始化好构造函数。前面我们说过在类定义里面会添加一些变量那么在类开始构造的时候就要初始化这些变量这就包括了定时器和初始值。另外因为整体字体比较小这里也一并处理了一下。
#include QApplication
#include QPushButton
#include QMessageBox
#include QtWidgetsApplication1.hQtWidgetsApplication1::QtWidgetsApplication1(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);//set fontQFont ft;ft.setPointSize(20);ui.label_1-setFont(ft);ui.label_2-setFont(ft);ui.label_3-setFont(ft);ui.label_4-setFont(ft);ui.label_5-setFont(ft);// set total valuetotal 1800;// set timerp_timer new QTimer(this);connect(p_timer, SIGNAL(timeout()), this, SLOT(update()));p_timer-start(1000); // 1000 is intervaldisplay_number();
}// destructor function
QtWidgetsApplication1::~QtWidgetsApplication1()
{if (p_timer){delete p_timer;}
}如代码所示这里创建了一个周期为1000ms的定时器它的回调函数是update初始值是1800。所以根据这些信息我们继续查看定时器的回调函数update
// timeout callback function
void QtWidgetsApplication1::update()
{total - 1;display_number();if (total 0){p_timer-stop();delete p_timer;p_timer NULL;QMessageBox::information(this, tip, Timeout!);}
} 回调函数update的逻辑还是很清晰的每1s递减1直到数值为0结束。这个时候停止定时器、删除定时器、跳出弹框。当然每次更新数值后更新数值也是必不可少的所以这里还有一个display_number的函数。
// shou data here
void QtWidgetsApplication1::display_number()
{ui.label_1-setText(QString::number((total / 60) / 10));ui.label_2-setText(QString::number((total / 60) % 10));ui.label_3-setText(QString::number((total % 60) / 10));ui.label_4-setText(QString::number((total % 60) % 10));
} display_number的内容比较简单首先计算分钟的十分位和个位接着计算秒钟的十分位和个位。最后把这些数值贴到label1、label2、label3、label4上面这样就达到了数值更新的效果。 4、测试和验证 测试的话就比较简单直接编译后启动即可。首先查看数字是否发生跳变。 如果ok再检验超时之后是否有弹窗一切都没有问题的话就可以了。反之就要回头debug单步调试下看看问题出在哪。