diff --git a/bottom-1.png b/bottom-1.png
new file mode 100644
index 0000000..ac9461e
Binary files /dev/null and b/bottom-1.png differ
diff --git a/bottom.png b/bottom.png
new file mode 100644
index 0000000..f14f321
Binary files /dev/null and b/bottom.png differ
diff --git a/font.qrc b/font.qrc
new file mode 100644
index 0000000..09349a9
--- /dev/null
+++ b/font.qrc
@@ -0,0 +1,5 @@
+
+
+ 逍遥行书.ttf
+
+
diff --git a/handle.cpp b/handle.cpp
new file mode 100644
index 0000000..b1eb5b1
--- /dev/null
+++ b/handle.cpp
@@ -0,0 +1,113 @@
+#include "handle.h"
+
+Handle::Handle(QWidget *parent)
+ : QWidget(parent)
+{
+ setAutoFillBackground(true);
+ setPalette(QPalette(Qt::transparent));
+ resize(200,200);
+ setMinimumSize(100,100);
+ mouseX=width()/2;
+ mouseY=height()/2;
+ tim=new QTimer(this);
+ connect(tim,&QTimer::timeout,this,[=]{
+ emit keyNumchanged(getKeyNum());
+ });
+ connect(this,&Handle::keyNumchanged,this,[=](int num){
+ qDebug()<pos().x();
+ mouseY=event->pos().y();
+ if(r==true){
+ update();
+ r=false;
+ }
+ else{
+ r=true;
+ }
+}
+void Handle::mouseReleaseEvent(QMouseEvent* event){
+ mouseX=width()/2;
+ mouseY=height()/2;
+ tim->stop();
+ mousePressed=false;
+ emit keyNumchanged(Handle::stop);
+ update();
+}
+void Handle::mousePressEvent(QMouseEvent* event){
+ mouseX=event->pos().x();
+ mouseY=event->pos().y();
+ tim->start(100);
+ mousePressed=true;
+ update();
+}
+
+double Handle::Pointdis(int a,int b,int x,int y){
+ return sqrt((double)((x-a)*(x-a)+(y-b)*(y-b)));
+}
+int Handle::getKeyNum(){
+ int x,y;
+ int keynum;
+ x=(int)(handleX*3.0/(padR*2));
+ y=(int)(handleY*3.0/(padR*2));
+ keynum=3*y+x;
+ return keynum;
+}
+
diff --git a/handle.h b/handle.h
new file mode 100644
index 0000000..9707987
--- /dev/null
+++ b/handle.h
@@ -0,0 +1,46 @@
+#ifndef HANDLE_H
+#define HANDLE_H
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+class Handle : public QWidget
+{
+ Q_OBJECT
+
+public:
+ Handle(QWidget *parent = 0);
+ ~Handle();
+ enum {upleft=0,up,upright,left,stop,right,downleft,down,downright};
+signals:
+ void keyNumchanged(int num);
+protected:
+ void paintEvent(QPaintEvent *event)override;
+ void mouseMoveEvent(QMouseEvent *event)override;
+ void mouseReleaseEvent(QMouseEvent *event)override;
+ void mousePressEvent(QMouseEvent *event)override;
+ // void resizeEvent(QResizeEvent *event)override;
+private:
+ int mouseX;
+ int mouseY;
+ int handleX;//摇杆
+ int handleY;
+ int handleR;
+ int padX;//底盘
+ int padY;
+ int padR;
+ double handPadDis;//两圆圆心距离
+ bool mousePressed;
+ QTimer *tim;
+private:
+ double Pointdis(int a,int b,int x,int y);//两点距离
+ int getKeyNum();
+
+};
+
+#endif // HANDLE_H
+
diff --git a/icon(Mac).iconset/icon_128x128.png b/icon(Mac).iconset/icon_128x128.png
new file mode 100644
index 0000000..4f32281
Binary files /dev/null and b/icon(Mac).iconset/icon_128x128.png differ
diff --git a/icon(Mac).iconset/icon_128x128@2x.png b/icon(Mac).iconset/icon_128x128@2x.png
new file mode 100644
index 0000000..ce2db88
Binary files /dev/null and b/icon(Mac).iconset/icon_128x128@2x.png differ
diff --git a/icon(Mac).iconset/icon_16x16.png b/icon(Mac).iconset/icon_16x16.png
new file mode 100644
index 0000000..71a3ac9
Binary files /dev/null and b/icon(Mac).iconset/icon_16x16.png differ
diff --git a/icon(Mac).iconset/icon_16x16@2x.png b/icon(Mac).iconset/icon_16x16@2x.png
new file mode 100644
index 0000000..e5742d7
Binary files /dev/null and b/icon(Mac).iconset/icon_16x16@2x.png differ
diff --git a/icon(Mac).iconset/icon_256x256.png b/icon(Mac).iconset/icon_256x256.png
new file mode 100644
index 0000000..ce2db88
Binary files /dev/null and b/icon(Mac).iconset/icon_256x256.png differ
diff --git a/icon(Mac).iconset/icon_256x256@2x.png b/icon(Mac).iconset/icon_256x256@2x.png
new file mode 100644
index 0000000..0ec6024
Binary files /dev/null and b/icon(Mac).iconset/icon_256x256@2x.png differ
diff --git a/icon(Mac).iconset/icon_32x32.png b/icon(Mac).iconset/icon_32x32.png
new file mode 100644
index 0000000..e5742d7
Binary files /dev/null and b/icon(Mac).iconset/icon_32x32.png differ
diff --git a/icon(Mac).iconset/icon_32x32@2x.png b/icon(Mac).iconset/icon_32x32@2x.png
new file mode 100644
index 0000000..d8b8d64
Binary files /dev/null and b/icon(Mac).iconset/icon_32x32@2x.png differ
diff --git a/icon(Mac).iconset/icon_512x512.png b/icon(Mac).iconset/icon_512x512.png
new file mode 100644
index 0000000..0ec6024
Binary files /dev/null and b/icon(Mac).iconset/icon_512x512.png differ
diff --git a/icon(Mac).iconset/icon_512x512@2x.png b/icon(Mac).iconset/icon_512x512@2x.png
new file mode 100644
index 0000000..df22c33
Binary files /dev/null and b/icon(Mac).iconset/icon_512x512@2x.png differ
diff --git a/icon(iOS).iconset/icon_100x100.png b/icon(iOS).iconset/icon_100x100.png
new file mode 100644
index 0000000..50ae775
Binary files /dev/null and b/icon(iOS).iconset/icon_100x100.png differ
diff --git a/icon(iOS).iconset/icon_114x114.png b/icon(iOS).iconset/icon_114x114.png
new file mode 100644
index 0000000..cd247cd
Binary files /dev/null and b/icon(iOS).iconset/icon_114x114.png differ
diff --git a/icon(iOS).iconset/icon_120x120.png b/icon(iOS).iconset/icon_120x120.png
new file mode 100644
index 0000000..e232bf1
Binary files /dev/null and b/icon(iOS).iconset/icon_120x120.png differ
diff --git a/icon(iOS).iconset/icon_144x144.png b/icon(iOS).iconset/icon_144x144.png
new file mode 100644
index 0000000..28aee7f
Binary files /dev/null and b/icon(iOS).iconset/icon_144x144.png differ
diff --git a/icon(iOS).iconset/icon_153x153.png b/icon(iOS).iconset/icon_153x153.png
new file mode 100644
index 0000000..d40148c
Binary files /dev/null and b/icon(iOS).iconset/icon_153x153.png differ
diff --git a/icon(iOS).iconset/icon_160x160.png b/icon(iOS).iconset/icon_160x160.png
new file mode 100644
index 0000000..5ccdcc2
Binary files /dev/null and b/icon(iOS).iconset/icon_160x160.png differ
diff --git a/icon(iOS).iconset/icon_172x172.png b/icon(iOS).iconset/icon_172x172.png
new file mode 100644
index 0000000..c847198
Binary files /dev/null and b/icon(iOS).iconset/icon_172x172.png differ
diff --git a/icon(iOS).iconset/icon_180x180.png b/icon(iOS).iconset/icon_180x180.png
new file mode 100644
index 0000000..cc14706
Binary files /dev/null and b/icon(iOS).iconset/icon_180x180.png differ
diff --git a/icon(iOS).iconset/icon_196x196.png b/icon(iOS).iconset/icon_196x196.png
new file mode 100644
index 0000000..ea6f925
Binary files /dev/null and b/icon(iOS).iconset/icon_196x196.png differ
diff --git a/icon(iOS).iconset/icon_29x29.png b/icon(iOS).iconset/icon_29x29.png
new file mode 100644
index 0000000..f9eae4c
Binary files /dev/null and b/icon(iOS).iconset/icon_29x29.png differ
diff --git a/icon(iOS).iconset/icon_40x40.png b/icon(iOS).iconset/icon_40x40.png
new file mode 100644
index 0000000..c3a7960
Binary files /dev/null and b/icon(iOS).iconset/icon_40x40.png differ
diff --git a/icon(iOS).iconset/icon_48x48.png b/icon(iOS).iconset/icon_48x48.png
new file mode 100644
index 0000000..a3fc842
Binary files /dev/null and b/icon(iOS).iconset/icon_48x48.png differ
diff --git a/icon(iOS).iconset/icon_50x50.png b/icon(iOS).iconset/icon_50x50.png
new file mode 100644
index 0000000..385ec4b
Binary files /dev/null and b/icon(iOS).iconset/icon_50x50.png differ
diff --git a/icon(iOS).iconset/icon_55x55.png b/icon(iOS).iconset/icon_55x55.png
new file mode 100644
index 0000000..b59dd87
Binary files /dev/null and b/icon(iOS).iconset/icon_55x55.png differ
diff --git a/icon(iOS).iconset/icon_57x57.png b/icon(iOS).iconset/icon_57x57.png
new file mode 100644
index 0000000..3a9986f
Binary files /dev/null and b/icon(iOS).iconset/icon_57x57.png differ
diff --git a/icon(iOS).iconset/icon_58x58.png b/icon(iOS).iconset/icon_58x58.png
new file mode 100644
index 0000000..ac2a1d8
Binary files /dev/null and b/icon(iOS).iconset/icon_58x58.png differ
diff --git a/icon(iOS).iconset/icon_72x72.png b/icon(iOS).iconset/icon_72x72.png
new file mode 100644
index 0000000..1cb3f32
Binary files /dev/null and b/icon(iOS).iconset/icon_72x72.png differ
diff --git a/icon(iOS).iconset/icon_76x76.png b/icon(iOS).iconset/icon_76x76.png
new file mode 100644
index 0000000..ebcc3a8
Binary files /dev/null and b/icon(iOS).iconset/icon_76x76.png differ
diff --git a/icon(iOS).iconset/icon_80x80.png b/icon(iOS).iconset/icon_80x80.png
new file mode 100644
index 0000000..7c98394
Binary files /dev/null and b/icon(iOS).iconset/icon_80x80.png differ
diff --git a/icon(iOS).iconset/icon_87x87.png b/icon(iOS).iconset/icon_87x87.png
new file mode 100644
index 0000000..b40b53d
Binary files /dev/null and b/icon(iOS).iconset/icon_87x87.png differ
diff --git a/icon.icns b/icon.icns
new file mode 100644
index 0000000..a8b2bbb
Binary files /dev/null and b/icon.icns differ
diff --git a/icon.png b/icon.png
new file mode 100644
index 0000000..46cb739
Binary files /dev/null and b/icon.png differ
diff --git a/image.qrc b/image.qrc
new file mode 100644
index 0000000..9feccf2
--- /dev/null
+++ b/image.qrc
@@ -0,0 +1,10 @@
+
+
+ pad.png
+ bottom.png
+ logo.png
+ wallpaper.JPG
+ icon.icns
+ bottom-1.png
+
+
diff --git a/launch.png b/launch.png
new file mode 100644
index 0000000..f9b1e3f
Binary files /dev/null and b/launch.png differ
diff --git a/launchicon.png b/launchicon.png
new file mode 100644
index 0000000..9661f38
Binary files /dev/null and b/launchicon.png differ
diff --git a/logo.png b/logo.png
new file mode 100644
index 0000000..6f5d7fa
Binary files /dev/null and b/logo.png differ
diff --git a/main.cpp b/main.cpp
new file mode 100644
index 0000000..6e56b9d
--- /dev/null
+++ b/main.cpp
@@ -0,0 +1,12 @@
+#include "mainwindow.h"
+
+#include
+
+int main(int argc, char *argv[])
+{
+ QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling, true);
+ QApplication a(argc, argv);
+ MainWindow w;
+ w.show();
+ return a.exec();
+}
diff --git a/mainwindow.cpp b/mainwindow.cpp
new file mode 100644
index 0000000..21bff9e
--- /dev/null
+++ b/mainwindow.cpp
@@ -0,0 +1,201 @@
+#include "mainwindow.h"
+#include "ui_mainwindow.h"
+#include "handle.h"
+#include
+
+MainWindow::MainWindow(QWidget *parent)
+ : QMainWindow(parent)
+ , ui(new Ui::MainWindow)
+{
+ QFontDatabase::addApplicationFont(":/font/逍遥行书.ttf");
+ client = new QMQTT::Client(QHostAddress::LocalHost, 1883);
+ connect(client, &QMQTT::Client::disconnected, this, &MainWindow::disconnected_handler);
+ connect(client, &QMQTT::Client::received, this, &MainWindow::received_handler);
+ connect(client, &QMQTT::Client::pingresp, this, &MainWindow::pingresp_handler);
+ connect(client, &QMQTT::Client::connected, this, &MainWindow::connected_handler);
+ connect(client, &QMQTT::Client::subscribed, this, &MainWindow::subscribed_handler);
+ right_r = new QTimer(this);
+ left_r = new QTimer(this);
+ connect(right_r,&QTimer::timeout,this,[=]{
+ if (key != '9')
+ {
+ QMQTT::Message message;
+ QByteArray payload;
+ message.setQos(1);
+ payload.append('9');
+ message.setPayload(payload);
+ message.setTopic("/Car");
+ client->publish(message);
+ key = '9';
+ }
+ });
+ connect(left_r,&QTimer::timeout,this,[=]{
+ if (key != 'A')
+ {
+ QMQTT::Message message;
+ QByteArray payload;
+ message.setQos(1);
+ payload.append('A');
+ message.setPayload(payload);
+ message.setTopic("/Car");
+ client->publish(message);
+ key = 'A';
+ }
+ });
+ ui->setupUi(this);
+}
+
+MainWindow::~MainWindow()
+{
+ delete ui;
+}
+
+
+void MainWindow::on_connectButton_clicked()
+{
+ client->setHostName(ui->addressEdit->text());
+ client->setPort(ui->portEdit->text().toInt());
+ client->setClientId("ios");
+ client->setUsername("iPhone");
+ client->setPassword("iPhone");
+ client->connectToHost();
+}
+
+void MainWindow::connected_handler()
+{
+ const QString content = QDateTime::currentDateTime().toString()
+ +"\n"
+ +"MQTT服务器已连接上\n";
+ ui->log->insertPlainText(content);
+ client->subscribe(ui->ctrlTopicEdit->text(),1);
+ ui->addressEdit->setEnabled(false);
+ ui->portEdit->setEnabled(false);
+ ui->ctrlTopicEdit->setEnabled(false);
+ ui->connectButton->setEnabled(false);
+ ui->disconnectButton->setEnabled(true);
+ ui->rocker->setEnabled(true);
+ ui->left_r->setEnabled(true);
+ ui->right_r->setEnabled(true);
+ client->setAutoReconnect(true);
+ connect(ui->rocker,&Handle::keyNumchanged,ui->rocker,[=](int num){
+ if (num != key)
+ {
+ QMQTT::Message message;
+ QByteArray payload;
+ message.setQos(1);
+ payload.append(num+'0');
+ message.setPayload(payload);
+ message.setTopic("/Car");
+ client->publish(message);
+ key = num;
+ }
+ });
+}
+
+void MainWindow::disconnected_handler()
+{
+ const QString content = QDateTime::currentDateTime().toString()
+ +"\n"
+ +"MQTT服务器已断开\n";
+ ui->log->insertPlainText(content);
+ ui->addressEdit->setEnabled(true);
+ ui->portEdit->setEnabled(true);
+ ui->ctrlTopicEdit->setEnabled(true);
+ ui->connectButton->setEnabled(true);
+ ui->disconnectButton->setEnabled(false);
+ ui->rocker->setEnabled(false);
+ ui->left_r->setEnabled(false);
+ ui->right_r->setEnabled(false);
+ disconnect(ui->rocker);
+}
+
+void MainWindow::received_handler(const QMQTT::Message& message)
+{
+ const QString content = QDateTime::currentDateTime().toString()
+ +"\n"
+ +"Topic: "+message.topic()+ QLatin1Char('\n')
+ +"Message: "+message.payload()+ QLatin1Char('\n')
+ +"Qos: "+QLatin1Char(message.qos()+'0')+'\n';
+ ui->log->insertPlainText(content);
+}
+
+void MainWindow::pingresp_handler()
+{
+ const QString content = QDateTime::currentDateTime().toString()
+ + QLatin1Char('\n')
+ + QLatin1String("MQTT Pong!")
+ + QLatin1Char('\n');
+ ui->log->insertPlainText(content);
+}
+
+void MainWindow::subscribed_handler(const QString& topic, const quint8 qos)
+{
+ const QString content = QDateTime::currentDateTime().toString()
+ +"\n"
+ +"Topic: "+topic+ QLatin1Char('\n')
+ +"Qos: "+QLatin1Char(qos+'0')+QLatin1Char('\n')+
+ "已订阅\n";
+ ui->log->insertPlainText(content);
+}
+
+void MainWindow::error_handler(const QMQTT::ClientError error)
+{
+ const QString content = QDateTime::currentDateTime().toString()
+ +"\n"
+ +"Error: "+ error;
+ ui->log->insertPlainText(content);
+}
+
+void MainWindow::on_disconnectButton_clicked()
+{
+ client->disconnectFromHost();
+ client->setAutoReconnect(false);
+}
+
+void MainWindow::on_log_textChanged()
+{
+ ui->log->moveCursor(QTextCursor::End);
+}
+
+
+void MainWindow::on_right_r_pressed()
+{
+ right_r->start(100);
+}
+
+void MainWindow::on_right_r_released()
+{
+ right_r->stop();
+ if ('4' != key)
+ {
+ QMQTT::Message message;
+ QByteArray payload;
+ message.setQos(1);
+ payload.append('4');
+ message.setPayload(payload);
+ message.setTopic("/Car");
+ client->publish(message);
+ key = '4';
+ }
+}
+
+void MainWindow::on_left_r_pressed()
+{
+ left_r->start(100);
+}
+
+void MainWindow::on_left_r_released()
+{
+ left_r->stop();
+ if ('4' != key)
+ {
+ QMQTT::Message message;
+ QByteArray payload;
+ message.setQos(1);
+ payload.append('4');
+ message.setPayload(payload);
+ message.setTopic("/Car");
+ client->publish(message);
+ key = '4';
+ }
+}
diff --git a/mainwindow.h b/mainwindow.h
new file mode 100644
index 0000000..a616213
--- /dev/null
+++ b/mainwindow.h
@@ -0,0 +1,48 @@
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include
+#include "qmqtt.h"
+
+QT_BEGIN_NAMESPACE
+namespace Ui { class MainWindow; }
+QT_END_NAMESPACE
+
+class MainWindow : public QMainWindow
+{
+ Q_OBJECT
+
+public:
+ MainWindow(QWidget *parent = nullptr);
+ ~MainWindow();
+
+private slots:
+ void on_connectButton_clicked();
+ void connected_handler();
+ void disconnected_handler();
+ void received_handler(const QMQTT::Message& message);
+ void pingresp_handler();
+ void subscribed_handler(const QString& topic, const quint8 qos);
+ void error_handler(const QMQTT::ClientError error);
+
+ void on_disconnectButton_clicked();
+
+ void on_log_textChanged();
+
+
+
+ void on_right_r_pressed();
+
+ void on_right_r_released();
+
+ void on_left_r_pressed();
+
+ void on_left_r_released();
+
+private:
+ Ui::MainWindow *ui;
+ QMQTT::Client *client;
+ QTimer *left_r,*right_r;
+ uint8_t key = -1;
+};
+#endif // MAINWINDOW_H
diff --git a/mainwindow.ui b/mainwindow.ui
new file mode 100644
index 0000000..e2c18f2
--- /dev/null
+++ b/mainwindow.ui
@@ -0,0 +1,507 @@
+
+
+ MainWindow
+
+
+
+ 0
+ 0
+ 485
+ 795
+
+
+
+
+ 0
+ 0
+
+
+
+ 物联网小车控制器
+
+
+ true
+
+
+ true
+
+
+ QTabWidget::Triangular
+
+
+ true
+
+
+ true
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
+ 字魂49号-逍遥行书
+ 44
+ 75
+ true
+
+
+
+ Qt::LeftToRight
+
+
+ 物联网小车控制器
+
+
+ Qt::AlignCenter
+
+
+ true
+
+
+
+ -
+
+
+ true
+
+
+
+ 0
+ 0
+
+
+
+
+ 2000
+ 2000
+
+
+
+
+ 1
+
+
+
+
+
+
+ :/image/bottom-1.png
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ true
+
+
+
+
+
+ QTabWidget::North
+
+
+ QTabWidget::Triangular
+
+
+ 0
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+
+ 控制器
+
+
+
-
+
+
+ false
+
+
+ 顺时针转🔃
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 1
+ 1
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ false
+
+
+ false
+
+
+
+ -
+
+
+ false
+
+
+ 逆时针转🔄
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
+ MQTT服务器
+
+
+ -
+
+
+ 服务器地址:
+
+
+
+ -
+
+
+ false
+
+
+ 断开
+
+
+
+ -
+
+
+ 服务器端口:
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ 控制Topic:
+
+
+
+ -
+
+
+ 11883
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ mqtt.ourdocs.cn
+
+
+
+ -
+
+
+ /Car
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ 连接
+
+
+
+
+
+
+
+ 日志
+
+
+
+ 20
+
+
+ 12
+
+
+ 20
+
+
+ 20
+
+ -
+
+
+
+
+
+
+ 关于
+
+
+ -
+
+
+
+ Comic Sans MS
+ 19
+ false
+
+
+
+ ©2021
+Made By Mentalflow.
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 字魂49号-逍遥行书
+ 27
+
+
+
+ 为电子设计综合实验设计
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ :/image/logo.png
+
+
+ false
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+
+ 关于
+
+
+
+
+
+ Handle
+ QWidget
+
+ 1
+
+
+
+
+
+
+
diff --git a/pad.png b/pad.png
new file mode 100644
index 0000000..52a59b8
Binary files /dev/null and b/pad.png differ
diff --git a/test.pro b/test.pro
new file mode 100644
index 0000000..8dd09f4
--- /dev/null
+++ b/test.pro
@@ -0,0 +1,34 @@
+QT += core gui
+
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets qmqtt
+
+CONFIG += c++11
+ICON = icon.icns
+TARGET = IoTCar
+# You can make your code fail to compile if it uses deprecated APIs.
+# In order to do so, uncomment the following line.
+#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
+
+SOURCES += \
+ handle.cpp \
+ main.cpp \
+ mainwindow.cpp
+
+HEADERS += \
+ handle.h \
+ mainwindow.h
+
+FORMS += \
+ mainwindow.ui
+
+TRANSLATIONS += \
+ test_zh_CN.ts
+
+# Default rules for deployment.
+qnx: target.path = /tmp/$${TARGET}/bin
+else: unix:!android: target.path = /opt/$${TARGET}/bin
+!isEmpty(target.path): INSTALLS += target
+
+RESOURCES += \
+ font.qrc \
+ image.qrc
diff --git a/test_zh_CN.ts b/test_zh_CN.ts
new file mode 100644
index 0000000..630fd35
--- /dev/null
+++ b/test_zh_CN.ts
@@ -0,0 +1,3 @@
+
+
+
diff --git a/wallpaper.JPG b/wallpaper.JPG
new file mode 100644
index 0000000..b0a8e5a
Binary files /dev/null and b/wallpaper.JPG differ
diff --git a/逍遥行书.ttf b/逍遥行书.ttf
new file mode 100644
index 0000000..23f3dd8
Binary files /dev/null and b/逍遥行书.ttf differ