最近学习QT,简单总结下计时器的完成过程。
新建项目
1.点击文件,新建文件或项目
2.点击下面的选项
3.在这里写项目的名称
4.点击下一步
5.操作完以下这些,点下一步
6.点击完成
新建好的项目如下
UI设计
点击widget.ui进入UI设计页面,进行相关设计
代码编写
设计思路:
- 打开页面的时候,显示0,只有开始按钮可以点击,其余的按钮不可点击;
- 点击 开始/继续 按钮的时候,数字随时间往上加,每一秒一变;
- 按下 暂停 按钮的时候,数字不再发生变化,且 开始 按钮不可点击;
- 按下 停止 按钮的时候数字变为0,变为初始状态,只有 开始 按钮可以点击,其余的按钮不可点击;
- 当按下 暂停 后,还可以按继续按钮,数字继续往上加。
1.在.h文件中初始化界面:开始的时候显示0
ui->setupUi(this);
ui->text->setText("0");
2.由于要用到计时器需要引入头文件:
#include <QTimer>
3.在.h文件中的类中定义一个指针变量:
private:
QTimer *timer;
4.文本框功能的编写:
自己编写一个槽函数void updateSlot();
实现数字的显示,之后与定时器绑定它,当计时器接收到相关信号后执行槽函数,如下:
void Widget::updateSlot()
{
n++;
ui->text->setText(QString::number(n));
}
在此之前还需要初始化一下n
private:
int n = 0;
绑定:
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(updateSlot()));
5.将三个按钮分别转到槽:
然后自动得到三个槽函数:
void on_btnstart_clicked();
void on_btnstop_clicked();
void on_btnpause_clicked();
开始按钮:
void Widget::on_btnstart_clicked()
{
timer->start(1000);
ui->btnstart->setEnabled(false);
ui->btnstop->setEnabled(true);
ui->btnpause->setEnabled(true);
}
暂停按钮:
void Widget::on_btnpause_clicked()
{
timer->stop();
ui->btnstart->setEnabled(true);
ui->btnstop->setEnabled(true);
ui->btnpause->setEnabled(false);
}
停止按钮:
void Widget::on_btnstop_clicked()
{
timer->stop();
n = 0;
ui->text->setText(QString::number(n));
ui->btnstart->setEnabled(true);
ui->btnstop->setEnabled(false);
ui->btnpause->setEnabled(false);
}
6.加入各个按钮的初始化状态及其变化状态
初始化时:
ui->btnstart->setEnabled(true);
ui->btnstop->setEnabled(false);
ui->btnpause->setEnabled(false);
其余各个状态已经放到上面各自的槽函数中了!
至此,项目基本完成;显示效果如下:
显示的位置还可以使用LCD显示效果会更好!