


环境: QT5 linux
主要知识点: QLable显示图片、动图;常用控件的使用;信号与槽复习;在QTextEdit显示不同颜色字体、并且能够实现回车换行效果;使用QStackedWidget实现四个页面切换;定时器的使用等
实现效果:
- 刚进入游戏前设置固定时间,进入游戏后由进度条显示剩余时间;
- 代码生成一个随机数,随机数种子基于当前时间而定,范围在1000到10000;
- 当用户输入数字时,会实时显示输入内容在左侧文本框,检测不能输入0为开头的数,并且输入的数为4位数后自动检测答案,按键里还设置了删除功能、正确结果显示;
- 每次输入的结果都会往下自动叠加;
- 当猜测的数字正确,则成功,显示动图;
- 当时间超时还未能猜测出来,则失败,显示失败动图;同时在动图里设置了继续游戏或退出游戏选项
MyWidget.h
#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <QWidget>
#include <QMovie>
namespace Ui {
class MyWidget;
}
class MyWidget : public QWidget
{
Q_OBJECT
public:
explicit MyWidget(QWidget *parent = 0);
~MyWidget();
//自定义槽函数
void dealNum();
public slots:
void go_On_Game();
void exit_from_Game();
private slots:
void on_pushButtonStart_clicked();
void on_pushButtonDel_clicked();
void on_pushButtonEnter_clicked();
protected:
//定时器事件,此为虚函数
void timerEvent(QTimerEvent *e);
private:
Ui::MyWidget *ui;
int gameTime; //游戏时间
QString randStr; //随机数
int gameTimerId; //游戏时间定时器ID
int overTimerId; //失败动画定时器ID
int winTimerId; //成功动画定时器ID
QString resultStr; //结果数
QString tmpResultStr;
QMovie overMovie; //失败动画
QMovie winMovie; //胜利动画
};
#endif // MYWIDGET_H
MyWidget.cpp
#include "mywidget.h"
#include "ui_mywidget.h"
#include <QDebug>
#include <QTime>
#include <QMessageBox>
#include <QString>
#include <QLabel>
MyWidget::MyWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::MyWidget)
{
ui->setupUi(this);
//显示第一个页面(设置页面)
//ui->stackedWidget->setCurrentIndex(0);
ui->stackedWidget->setCurrentWidget(ui->pageSet);
//初始化数据
//失败动画
overMovie.setFileName(":/new/prefix1/Image/over.gif");
ui->labelOver->setMovie(&overMovie);//给标签设置动画
ui->labelOver->setScaledContents(true