目录
一、项目介绍
- 一、项目介绍
- 二、项目基本配置
- 三、UI界面设计
- 四、主程序实现
- 4.1 mainwindow.h
- 4.2 mainwindow.cpp
- 五、效果演示
在界面中设置一个开始时间,点击开始按钮,开始倒计时,暂停按钮控制倒计时的暂停和继续。
新建一个Mainwindow界面。基本配置与其他Qt项目类似,这里不过多介绍。
三、UI界面设计UI界面如下: 界面中创建了4个控件,其名称和类型如下表所示:
主要代码如下:
public:
int min=0;//定义分钟
int sec=0;//定义秒
bool clicked = false;//点击
private:
Ui::MainWindow *ui;
QDateTimeEdit *pgtimeline;
QTimer *pgtimer1000;
QLCDNumber *lcdNumber;
private slots:
void updateTime1000();
void starttime();
void stoptime();
4.2 mainwindow.cpp
MainWindow函数内代码如下:
//设置日期时间框
//pgtimeline=new QDateTimeEdit(this);
ui->pgtimeline->setDisplayFormat("mm分ss秒");
//设置LCD显示
//lcdNumber=new QLCDNumber(this);
ui->lcdNumber->setDigitCount(8);
ui->lcdNumber->setSegmentStyle(QLCDNumber::Flat);
ui->lcdNumber->display("0");
//创建计时器
pgtimer1000=new QTimer;
connect(ui->beginBtn,&QPushButton::clicked,this,&MainWindow::starttime);//开始按钮槽函数
connect(ui->stopBtn,&QPushButton::clicked,this,&MainWindow::stoptime);//暂停按钮槽函数
connect(pgtimer1000,&QTimer::timeout,this,&MainWindow::updateTime1000);//倒计时更新
创建三个槽函数,分别为开始按钮槽函数、暂停按钮槽函数和倒计时器槽函数。 开始按钮槽函数:
//开始按钮槽函数
void MainWindow::starttime()
{
QString strMinute = ui->pgtimeline->sectionText(QDateTimeEdit::MinuteSection);
QString strSecond = ui->pgtimeline->sectionText(QDateTimeEdit::SecondSection);
min=strMinute.toInt();//分钟
sec=strSecond.toInt();//秒
pgtimer1000->start(1000);//每隔1000ms计时一次
}
暂停按钮槽函数:
//暂停按钮槽函数
void MainWindow::stoptime()
{
QString button_style="QPushButton{background-color:#4682B4;color:white}";
QString button_style2="QPushButton:pressed{background-color:white;color:#4682B4;border-style:inset;}";
if(clicked == false)//表示倒计时器处于运行状态,单击之后按钮状态变成“继续”
{
ui->stopBtn->setText(QString::fromUtf8("继续"));
ui->stopBtn->setStyleSheet(button_style2);
pgtimer1000->stop();
clicked = true;
}
else if(clicked == true)//表示倒计时器处于停止状态,单击之后按钮状态变成“暂停”
{
ui->stopBtn->setText(QString::fromUtf8("暂停"));
ui->stopBtn->setStyleSheet(button_style);
pgtimer1000->start(1000);
clicked = false;
}
}
倒计时器槽函数:
//倒计时器槽函数
void MainWindow::updateTime1000()
{
if (sec!=0)
{
sec=sec-1;
}
else if (min!=0)
{
sec=59;
min=min-1;
}
else
pgtimer1000->stop();//分和秒都为0时,停止计时器
ui->lcdNumber->display(QString("%1:%2").arg(QString::number(min),QString::number(sec)));
}
五、效果演示
ok!以上便是全部内容了,完整代码可以参考:https://download.csdn.net/download/didi_ya/21771904,如果对你有所帮助,记得点个赞哟~