运行界面如图
相比Python制作的计分器启动速度更快, 代码如下
在mainwindow.h中
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include<QDebug>
#include<QPainter>
#include<QPushButton>
#include <QFile>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
int number = 0;
void paintEvent(QPaintEvent *);
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
在mainwindow.cpp中
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
//创建UI界面
ui->setupUi(this);
setFixedSize(300,150);
setWindowTitle("Keeping");
setWindowIcon(QIcon(":/res/icon3.png"));
//读取文件
QFile file("D:\\Ddisk\\UnitCode\\Qt\\jiafa_data.txt");
file.open(QIODevice::ReadOnly);
QTextStream qstr_all_file(&file);
QString qstr = qstr_all_file.readLine();// 此时读入的一行不包括换行符
this->number = qstr.toInt();
ui->lcdNumber->display(number);
file.close();
//将按钮与对应lcd进行连接
connect(ui->pushButton,&QPushButton::clicked,[=](){
this->number=this->number+1;
ui->lcdNumber->display(number);
});
connect(ui->pushButton_3,&QPushButton::clicked,[=](){
this->number=this->number+2;
ui->lcdNumber->display(number);
});
connect(ui->pushButton_2,&QPushButton::clicked,[=](){
this->number=0;
ui->lcdNumber->display(number);
});
}
//设置背景界面
void MainWindow::paintEvent(QPaintEvent *){
QPainter painter(this);
QPixmap pix;
pix.load(":/res/002.jpg");
painter.drawPixmap(0,0,this->width(),this->height(),pix);
}
MainWindow::~MainWindow()
{
delete ui;
}
在main.cpp中
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
int wait_value = a.exec();
//关闭窗口写入文件
QFile initial_d("D:\\Ddisk\\UnitCode\\Qt\\jiafa_data.txt");
initial_d.open(QIODevice::WriteOnly|QIODevice::Text);
QTextStream in(&initial_d);
in<<w.number<<endl;
initial_d.close();
//返回exec()的返回值
return wait_value;
}