我使用的版本是QT Creator 5.12.10.具体实现效果:
一 实训任务
利用Qt-Creator编程设计一个篮球记分计时界面开发系统,实现24秒一节次的倒计时篮球记
分牌。
二 实训要求
1、基本要求
(1)按照题目要求使用Qt编程,独立设计系统所需界面,实现24秒倒计时的篮球记分计
时界面开发系统。
(2)通过按钮控件实现“运行/暂停”功能,同时还可通过按钮或其它控件实现A,B两队加
分操作,犯规减分操作。
(3)停表计时就是:比赛开始后,犯规,罚球,暂停,都要停表。累计时间到24秒后,该
节次结束,共4节次。
2、扩展部分
(1)扩展多位数据显示,能实现.99的显示。
(2)加时操作功能。
(3)真实场景仿真展示等。
三 实训题目原理
倒计时设计的原理框图如图3所示。
图3 倒计时系统框图
说明:同学们可以改变方案,只要满足要求即可。
四 实训步骤
1、认真分析任务要求,根据功能初步设计Qt图像化编程界面。
2、对照任务编写相应程序模块,逐步调试,实现各部分功能。
3、整体联调,并优化程序,完成其它部分和发挥部分。
4、撰写实训报告(包括设计与调试的全过程,附上相关资料和心得体会)。
五 实训报告格式
1、任务题目;
2、性能、指标、要求;
3、方案设计:
(1)方案论证
(2)工作原理
(3)Qt界面图
(4)流程图
4、程序设计与调试测试过程;
5、实训心得体会。
test0.cpp文件代码:
#include "test10.h"
#include "ui_test10.h"
Test10::Test10(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Test10)
{
ui->setupUi(this);
setFixedSize(650, 500);
setWindowTitle("杰若不是");
ui->lcdNumber_3->display(countdown);
ui->label_5->setAlignment(Qt::AlignCenter); // 设置文本居中对齐
ui->label_5->setStyleSheet("font-size: 40px;"); // 设置字体大小为 40 像素
ui->label_6->setStyleSheet("font-size: 40px;");
countdownTimer = new QTimer(this); // 创建倒计时器
countdownTimer1 = new QTimer(this); // 创建倒总时间计时器
connect(countdownTimer, &QTimer::timeout, this, &Test10::updateCountdown); // 将倒计时器的timeout信号连接到updateCountdown槽函数
connect(countdownTimer1, &QTimer::timeout, this, &Test10::updateCountdown1);
}
Test10::~Test10()
{
delete ui;
}
void Test10::on_pushButton_5_clicked()
{
ui->lcdNumber_3->display(countdown); // 在标签上显示倒计时的剩余时间
countdownTimer1->start(1000);
countdownTimer->start(1000); // 每秒触发一次timeout信号,即每秒更新一次倒计时
}
void Test10::updateCountdown()
{
countdown--; // 倒计时的剩余时间减1
ui->lcdNumber_3->display(countdown); // 在QLCDNumber上显示更新后的倒计时剩余时间
if (countdown == 0) {// 如果倒计时结束
countdown = 24;
ui->lcdNumber_3->display(countdown);
countdownTimer->stop(); // 停止倒计时器
countdownTimer1->stop();
}
}
void Test10::on_pushButton_6_clicked()
{
countdownTimer->stop();
countdownTimer1->stop();
}
void Test10::on_pushButton_7_clicked()
{
countdown = 24;
ui->lcdNumber_3->display(countdown);
countdownTimer1->stop();
countdownTimer->stop();
}
void Test10::on_pushButton_clicked()
{
Adefeng++;
ui->lcdNumber->display(Adefeng);
}
void Test10::on_pushButton_3_clicked()
{
Adefeng--;
if (Adefeng < 0){
Adefeng = 0;
}
ui->lcdNumber->display(Adefeng);
}
void Test10::on_pushButton_2_clicked()
{
Bdefeng++;
ui->lcdNumber_2->display(Bdefeng);
}
void Test10::on_pushButton_4_clicked()
{
Bdefeng--;
if (Bdefeng < 0){
Bdefeng = 0;
}
ui->lcdNumber_2->display(Bdefeng);
}
void Test10::on_pushButton_8_clicked()
{
Afa++;
if (Afa == 6){
Afa = 5;
}
ui->label_3->setText("犯规次数:" + QString::number(Afa));
}
void Test10::on_pushButton_9_clicked()
{
Afa--;
if (Afa == -1){
Afa =0;
}
ui->label_3->setText("犯规次数:" + QString::number(Afa));
}
void Test10::on_pushButton_10_clicked()
{
Bfa++;
if (Bfa == 6){
Bfa = 5;
}
ui->label_4->setText("犯规次数:" + QString::number(Bfa));
}
void Test10::on_pushButton_11_clicked()
{
Bfa--;
if (Bfa == -1){
Bfa =0;
}
ui->label_4->setText("犯规次数:" + QString::number(Bfa));
}
void Test10::on_pushButton_12_clicked()
{
if (jie == 6){
ui->label_6->setText("加时赛\t" + QString::number(feng) + " : " + QString::number(miao));
}else{
ui->label_6->setText("第 " + QString::number(jie) + " 节" + "\t" + QString::number(feng) + " : " + QString::number(miao));
}
countdownTimer->start(1000);
countdownTimer1->start(1000);
}
void Test10::updateCountdown1()
{
miao--;
if (miao == -1){
feng--;
miao = 59;
}
if (jie == 6){
ui->label_6->setText("加时赛\t" + QString::number(feng) + " : " + QString::number(miao));
}else{
ui->label_6->setText("第 " + QString::number(jie) + " 节" + "\t" + QString::number(feng) + " : " + QString::number(miao));
}
if (miao==0&&feng==0){
jie++;
if (jie == 5 || jie == 6){
ui->label_6->setText("比赛结束");
}
countdownTimer1->stop();
countdownTimer->stop();
}
}
void Test10::on_pushButton_13_clicked()
{
feng = 5;
miao = 0;
jie = 6;
ui->label_6->setText("加时赛\t" + QString::number(feng) + " : " + QString::number(miao));
countdown = 24;
ui->lcdNumber_3->display(countdown);
countdownTimer1->stop();
countdownTimer->stop();
}
void Test10::on_pushButton_14_clicked()
{
Adefeng=Adefeng+2;
ui->lcdNumber->display(Adefeng);
}
void Test10::on_pushButton_15_clicked()
{
Adefeng=Adefeng+3;
ui->lcdNumber->display(Adefeng);
}
void Test10::on_pushButton_16_clicked()
{
Bdefeng=Bdefeng+2;
ui->lcdNumber_2->display(Bdefeng);
}
void Test10::on_pushButton_17_clicked()
{
Bdefeng=Bdefeng+3;
ui->lcdNumber_2->display(Bdefeng);
}
main.cpp代码如下:
#include "test10.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Test10 w;
w.show();
return a.exec();
}
test10.h代码如下:
#ifndef TEST10_H
#define TEST10_H
#include <QMainWindow>
#include <QLabel>
#include <QPushButton>
#include <QTimer>
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui { class Test10; }
QT_END_NAMESPACE
class Test10 : public QWidget
{
Q_OBJECT
public:
Test10(QWidget *parent = nullptr);
~Test10();
private slots:
void on_pushButton_5_clicked();//开启24秒倒计时
void updateCountdown();
void updateCountdown1();
void on_pushButton_6_clicked();
void on_pushButton_7_clicked();
void on_pushButton_clicked();
void on_pushButton_3_clicked();
void on_pushButton_2_clicked();
void on_pushButton_4_clicked();
void on_pushButton_8_clicked();
void on_pushButton_9_clicked();
void on_pushButton_10_clicked();
void on_pushButton_11_clicked();
void on_pushButton_12_clicked();
void on_pushButton_13_clicked();
void on_pushButton_14_clicked();
void on_pushButton_15_clicked();
void on_pushButton_16_clicked();
void on_pushButton_17_clicked();
private:
Ui::Test10 *ui;
QTimer *countdownTimer; // 倒计时器
QTimer *countdownTimer1; // 总时间
QPushButton pushButton_5;
int countdown = 24;
int Adefeng = 0;
int Bdefeng = 0;
int Afa = 0;
int Bfa = 0;
int jie = 1;//定义接数
int feng = 9;
int miao = 60;
};
#endif // TEST10_H