From 095c7aa6b3fb9f4d5f02898d2cf180a03e408e29 Mon Sep 17 00:00:00 2001
From: zhuhang <729713003@qq.com>
Date: 星期四, 07 十一月 2024 11:49:05 +0800
Subject: [PATCH] 1

---
 Client/朱航/code/服务端/LogSearch.h                    |   17 
 Client/朱航/code/kunlunclient/kunlunclient.pro      |   39 
 Client/朱航/code/kunlunclient/clientmainwindow.cpp  |   52 +
 Client/朱航/code/kunlunclient/logquery.h            |   49 +
 Client/朱航/code/kunlunclient/kunlunclient.pro.user |  806 +++++++++++++++++
 Client/朱航/code/kunlunclient/logquery.cpp          |  216 ++++
 Client/朱航/code/kunlunclient/main.cpp              |   11 
 Client/朱航/code/kunlunclient/clientmainwindow.ui   |   60 +
 Client/朱航/code/kunlunclient/logquery.ui           |  209 ++++
 Client/朱航/code/kunlunclient/common.h              | 1062 +++++++++++++++++++++++
 Client/朱航/code/kunlunclient/clientmainwindow.h    |   34 
 Client/朱航/code/服务端/LogSearch.cpp                  |   91 ++
 12 files changed, 2,646 insertions(+), 0 deletions(-)

diff --git "a/Client/\346\234\261\350\210\252/code/kunlunclient/clientmainwindow.cpp" "b/Client/\346\234\261\350\210\252/code/kunlunclient/clientmainwindow.cpp"
new file mode 100644
index 0000000..10656a5
--- /dev/null
+++ "b/Client/\346\234\261\350\210\252/code/kunlunclient/clientmainwindow.cpp"
@@ -0,0 +1,52 @@
+锘�#include "clientmainwindow.h"
+#include "ui_clientmainwindow.h"
+#include <QDebug>
+#pragma execution_character_set("utf-8")
+
+ClientMainWindow::ClientMainWindow(QWidget *parent) :
+    QMainWindow(parent),
+    ui(new Ui::ClientMainWindow)
+{
+    ui->setupUi(this);
+
+    m_client = new QTcpSocket(this);
+    m_client->connectToHost("127.0.0.1",16888);
+    if(m_client->waitForConnected()){
+        qDebug()<<"conn success";
+        //鍏宠仈鏀跺寘妲�
+        connect(m_client,SIGNAL(readyRead()),this,SLOT(myRead()));
+        //璋冪敤鐣岄潰鍒濆鍖�
+        initUi();
+    }else{
+        qDebug()<<"conn fail:"<<m_client->errorString();
+    }
+
+
+}
+
+ClientMainWindow::~ClientMainWindow()
+{
+    delete ui;
+}
+
+void ClientMainWindow::initUi()
+{
+    //m_logSer = new LogQuery(this);
+    m_logSer = new LogQuery(m_client,this);
+    ui->tabWidget->addTab(m_logSer,"鏃ュ織鏌ヨ");
+    connect(this,SIGNAL(queryResSignal(LogQueryRes*)),m_logSer,SLOT(queryResSlot(LogQueryRes*)));
+}
+
+void ClientMainWindow::myRead()
+{
+    QByteArray buffer = m_client->readAll();
+    qDebug()<< "buffer.size():"<<buffer.size();
+    qDebug()<< "buffer:"<<buffer;
+    int type = ((Head*)buffer.data())->type;
+    qDebug()<<"type:"<<type;
+    if(type == LOGSEARCH_RES){
+        LogQueryRes *res = (LogQueryRes*)buffer.data();
+        qDebug()<< "status:"<<res->status;
+        emit queryResSignal(res);//鍙戜俊鍙风粰鏃ュ織鏌ヨ鐣岄潰
+    }
+}
diff --git "a/Client/\346\234\261\350\210\252/code/kunlunclient/clientmainwindow.h" "b/Client/\346\234\261\350\210\252/code/kunlunclient/clientmainwindow.h"
new file mode 100644
index 0000000..e74e0a5
--- /dev/null
+++ "b/Client/\346\234\261\350\210\252/code/kunlunclient/clientmainwindow.h"
@@ -0,0 +1,34 @@
+锘�#ifndef CLIENTMAINWINDOW_H
+#define CLIENTMAINWINDOW_H
+
+#include <QMainWindow>
+#include "logquery.h"
+#include "common.h"
+#include <QTcpSocket>
+#pragma execution_character_set("utf-8")
+
+namespace Ui {
+class ClientMainWindow;
+}
+
+class ClientMainWindow : public QMainWindow
+{
+    Q_OBJECT
+
+public:
+    explicit ClientMainWindow(QWidget *parent = 0);
+    ~ClientMainWindow();
+
+    void initUi();
+
+signals:
+    void queryResSignal(LogQueryRes *);//鏃ュ織鏌ヨ鍝嶅簲淇″彿
+private slots:
+    void myRead();
+private:
+    Ui::ClientMainWindow *ui;
+    LogQuery *m_logSer;
+    QTcpSocket *m_client;
+};
+
+#endif // CLIENTMAINWINDOW_H
diff --git "a/Client/\346\234\261\350\210\252/code/kunlunclient/clientmainwindow.ui" "b/Client/\346\234\261\350\210\252/code/kunlunclient/clientmainwindow.ui"
new file mode 100644
index 0000000..2c83af9
--- /dev/null
+++ "b/Client/\346\234\261\350\210\252/code/kunlunclient/clientmainwindow.ui"
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ClientMainWindow</class>
+ <widget class="QMainWindow" name="ClientMainWindow">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>663</width>
+    <height>537</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>ClientMainWindow</string>
+  </property>
+  <widget class="QWidget" name="centralWidget">
+   <layout class="QGridLayout" name="gridLayout">
+    <item row="0" column="0">
+     <widget class="QTabWidget" name="tabWidget">
+      <property name="currentIndex">
+       <number>1</number>
+      </property>
+      <widget class="QWidget" name="tab">
+       <attribute name="title">
+        <string>瀹炴椂澶у睆</string>
+       </attribute>
+      </widget>
+      <widget class="QWidget" name="tab_2">
+       <attribute name="title">
+        <string>绯荤粺璁剧疆</string>
+       </attribute>
+      </widget>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="menuBar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>663</width>
+     <height>23</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QToolBar" name="mainToolBar">
+   <attribute name="toolBarArea">
+    <enum>TopToolBarArea</enum>
+   </attribute>
+   <attribute name="toolBarBreak">
+    <bool>false</bool>
+   </attribute>
+  </widget>
+  <widget class="QStatusBar" name="statusBar"/>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources/>
+ <connections/>
+</ui>
diff --git "a/Client/\346\234\261\350\210\252/code/kunlunclient/common.h" "b/Client/\346\234\261\350\210\252/code/kunlunclient/common.h"
new file mode 100644
index 0000000..13ee96b
--- /dev/null
+++ "b/Client/\346\234\261\350\210\252/code/kunlunclient/common.h"
@@ -0,0 +1,1062 @@
+锘�#ifndef COMMON_H
+#define COMMON_H
+
+#include <string.h>
+
+enum TypeInfo {
+
+	//娉ㄥ唽鐧诲綍
+	LOGIN_REQ, // 鐧诲綍璇锋眰
+	LOGIN_RES, // 鐧诲綍鍝嶅簲
+	REGISTER_REQ, //娉ㄥ唽璇锋眰
+	REGISTER_RES, //娉ㄥ唽鍝嶅簲
+	RESET_REQ, //閲嶇疆瀵嗙爜璇锋眰
+	RESET_RES, //閲嶇疆瀵嗙爜鍝嶅簲
+
+
+	//鏉冮檺绠$悊
+	QUERY_PMS_REQ,      // 鎸夊憳宸ョ紪鍙枫�佸悕瀛楁垨鑱屼綅鏌ヨ浜哄憳鏉冮檺淇℃伅璇锋眰
+	UPDATE_PMS_REQ,     // 鎸夎鑹瞚d鏇存柊鏉冮檺淇℃伅璇锋眰
+	QUERY_PMS_RES,      // 鏌ヨ浜哄憳鍜岃鑹蹭俊鎭殑鍝嶅簲缁撴瀯浣�
+	UPDATE_PMS_RES,     // 鏉冮檺鏇存柊缁撴灉鍝嶅簲浣�
+
+	//璁惧绠$悊
+	AD_REQ,//娣诲姞璁惧璇锋眰
+	AD_RES,//娣诲姞璁惧鍝嶅簲
+	MD_REQ,//淇敼璁惧璇锋眰
+	MD_RES,//淇敼璁惧鍝嶅簲
+	QD_REQ,//鏌ヨ璁惧璇锋眰
+	QD_RES,//鏌ヨ璁惧鍝嶅簲
+
+	//鍦板浘鏍囨敞
+	MML_REQ,//鍦板浘鏍囨敞鍔犺浇璇锋眰
+	MML_RES,//鍦板浘鏍囨敞鍔犺浇鍝嶅簲	
+	MMI_REQ,//鍦板浘鏍囨敞鎻掑叆璇锋眰
+	MMI_RES,//鍦板浘鏍囨敞鎻掑叆鍝嶅簲	
+	MMD_REQ,//鍦板浘鏍囨敞鍒犻櫎璇锋眰
+	MMD_RES,//鍦板浘鏍囨敞鍒犻櫎鍝嶅簲
+
+	//澶у睆鏄剧ず
+	ENVIRONMENT_REQ,//鐜鏁版嵁璇锋眰
+	ENVIRONMENT_RES,//鐜鏁版嵁鍝嶅簲
+	DEVICESTATUS_REQ,//璁惧鐘舵�佽姹�
+	DEVICESTATUS_RES,//璁惧鐘舵�佸搷搴�
+	MOVEMENTRECORD_REQ,//鎿嶄綔鏃ュ織璇锋眰
+	MOVEMENTRECORD_RES,//鎿嶄綔鏃ュ織鍝嶅簲
+	ALARMRECORD_REQ,//璀︽姤璁板綍璇锋眰
+	ALARMRECORD_RES,//璀︽姤璁板綍鍝嶅簲
+	YIELD_REQ,//鐓ょ熆浜ч噺璇锋眰
+	YIELD_RES,//鐓ょ熆浜ч噺鍝嶅簲
+
+	//璀︽姤绠$悊
+	WARNING_REQ, // 璀︽姤璇锋眰
+	WARNING_RES, // 璀︽姤鍝嶅簲
+
+
+	//鐢熶骇璁″垝绠$悊
+	ADD_PDPLAN_REQ,//娣诲姞涓�鏉$敓浜ц鍒掔殑璇锋眰缁撴瀯浣�
+	ADD_PDPLAN_RES,//娣诲姞涓�鏉$敓浜ц鍒掔殑鍝嶅簲缁撴瀯浣�
+	DEL_PDPLAN_REQ,//鍒犻櫎涓�鏉$敓浜ц鍒掔殑璇锋眰缁撴瀯浣�
+	DEL_PDPLAN_RES,//鍒犻櫎涓�鏉$敓浜ц鍒掔殑鍝嶅簲缁撴瀯浣�
+	UPDATE_PDPLAN_REQ,//鏇存敼涓�鏉$敓浜ц鍒掔殑璇锋眰缁撴瀯浣�
+	UPDATE_PDPLAN_RES,//鏇存敼涓�鏉$敓浜ц鍒掔殑鍝嶅簲缁撴瀯浣�
+	QUERY_PDPLAN_REQ,//鏌ヨ涓�鏉$敓浜ц鍒掔殑璇锋眰缁撴瀯浣�
+	QUERY_PDPLAN_RES,//鏌ヨ涓�鏉$敓浜ц鍒掔殑鍝嶅簲缁撴瀯浣�
+
+
+	ADD_MONOUTPUT_REQ,//娣诲姞鏈堜骇閲忕殑璇锋眰缁撴瀯浣�
+	ADD_MONOUTPUT_RES,//娣诲姞鏈堜骇閲忕殑鍝嶅簲缁撴瀯浣�
+	DEL_MONOUTPUT_REQ,//鍒犻櫎鏈堜骇閲忕殑璇锋眰缁撴瀯浣�
+	DEL_MONOUTPUT_RES,//鍒犻櫎鏈堜骇閲忕殑鍝嶅簲缁撴瀯浣�
+	UPDATE_MONOUTPUT_REQ,//鏇存柊鏈堜骇閲忕殑璇锋眰缁撴瀯浣�
+	UPDATE_MONOUTPUT_RES,//鏇存柊鏈堜骇閲忕殑鍝嶅簲缁撴瀯浣�
+	QUERY_MONOUTPUT_REQ,//鏌ヨ鏈堜骇閲忕殑璇锋眰缁撴瀯浣�
+	QUERY_MONOUTPUT_RES,//鏌ヨ鏈堜骇閲忕殑鍝嶅簲缁撴瀯浣�
+
+
+	//鑷姩鍗囩骇
+	VERSION_NUM_REQ,  // 鐗堟湰鍙疯姹�
+	VERSION_NUM_RES,   // 鐗堟湰鍙峰搷搴�
+	UPLOAD_FILE_REQ, // 涓婁紶鏂囦欢鐨勮姹�
+	UPLOAD_FILE_RES, // 涓婁紶鏂囦欢鐨勫搷搴�
+	VERSION_INFOENTRY_REQ,       // 鐗堟湰淇℃伅褰曞叆璇锋眰
+	VERSION_INFOENTRY_RES,       //鐗堟湰淇℃伅褰曞叆鍝嶅簲
+	VERSION_UPDATE_REQ, // 鐗堟湰鏇存柊璇锋眰
+	VERSION_UPDATE_RES, // 鐗堟湰鏇存柊鍝嶅簲
+	FILE_DOWNLOADS_REQ, // 鐗堟湰鏇存柊鏂囦欢涓嬭浇璇锋眰
+	FILE_DOWNLOADS_RES, // 鐗堟湰鏇存柊鏂囦欢涓嬭浇鍝嶅簲
+	DOWNLOAD_SUCCESSFULLY_RES,       // 鏇存柊鏂囦欢涓嬭浇鎴愬姛鐨勫搷搴�
+
+	//鏃ュ織
+	LOGSEARCH_REQ,//鏃ュ織鏌ヨ璇锋眰
+
+	LOGSEARCH_RES,//鏃ュ織鏌ヨ鍝嶅簲
+
+};
+
+struct Head {
+	int type;
+	int len;
+};
+
+//娉ㄥ唽鐧诲綍
+//鐧诲綍璇锋眰 
+struct LoginReq
+{
+	Head head;
+	char userName[32];
+	char password[32];
+	LoginReq() {
+		head.type = LOGIN_REQ;
+		head.len = sizeof(LoginReq);
+	}
+};
+
+struct Permission
+{
+	int admin;//瓒呯骇绠$悊鍛�
+	int loggerSearch; //鏃ュ織鏌ヨ
+	int queryHistory; //鍘嗗彶璁板綍
+	int mapMark;//鍦板浘
+	int versionManage; // 鐗堟湰绠$悊
+	int warning; //璀︽姤
+	int devManage; //璁惧绠$悊
+	int productPlan;//鐢熶骇璁″垝
+	char roleName[32]; // 瑙掕壊鍚�
+};
+
+//鐧诲綍鍝嶅簲
+struct LoginRes
+{
+	Head head;
+	char userName[32];
+	int status; // 鐧诲綍鐘舵��
+	// 鐧诲綍鎴愬姛鏃讹紝璇ヨ处鍙峰搴旂殑鏉冮檺缁勫悎
+	Permission per;
+	LoginRes()
+	{
+		head.type = LOGIN_RES;
+		head.len = sizeof(LoginRes);
+	}
+};
+
+//娉ㄥ唽璇锋眰 
+struct RegisterReq
+{
+	Head head;
+	char userName[32];
+	char password[32];
+	char email[50];
+	char capcha[10];//楠岃瘉鐮�
+	char telephone[32];
+	RegisterReq() {
+		head.type = REGISTER_REQ;
+		head.len = sizeof(RegisterReq);
+	}
+};
+
+//娉ㄥ唽鍝嶅簲
+struct RegisterRes
+{
+	Head head;
+	char userName[32];
+	int status; // 娉ㄥ唽鐘舵��
+	RegisterRes()
+	{
+		head.type = REGISTER_RES;
+		head.len = sizeof(RegisterRes);
+	}
+};
+
+//閲嶇疆瀵嗙爜璇锋眰 
+struct ResetReq
+{
+	Head head;
+	char email[50];
+	char capcha[10];//楠岃瘉鐮�
+	char password[32];//鏂板瘑鐮�
+	char confirmPassword[32];//纭瀵嗙爜
+	ResetReq() {
+		head.type = RESET_REQ;
+		head.len = sizeof(ResetReq);
+	}
+};
+
+//閲嶇疆瀵嗙爜鍝嶅簲
+struct ResetRes
+{
+	Head head;
+	char user_name[32];
+	int status; // 閲嶇疆瀵嗙爜鐘舵��
+	ResetRes()
+	{
+		head.type = RESET_RES;
+		head.len = sizeof(ResetRes);
+	}
+};
+
+//鏉冮檺绠$悊
+// 鎸夊憳宸ョ紪鍙枫�佸悕瀛楁垨鑱屼綅鏌ヨ浜哄憳鏉冮檺淇℃伅璇锋眰
+ struct QueryPmsReq {
+	Head head;
+	char userNo[32];
+	char name[32];
+	char permissonType[32];
+	QueryPmsReq() {
+		head.type = QUERY_PMS_REQ;
+		memset(userNo, 0, 32);
+		memset(permissonType, 0, 32);
+		memset(name, 0, 32);
+		head.len = sizeof(QueryPmsReq);
+	}
+};
+
+// 鎸夎鑹瞚d鏇存柊鏉冮檺淇℃伅璇锋眰
+struct UpdatePmsReq {
+	Head head;
+	// 浜哄憳琛ㄤ富閿甶d
+	int id;
+	int queryHistory;
+	int loggerSearch;
+	int mapMark;
+	int devManage;
+	int productPlan;
+	int warningManage;
+	int versionManage; //鐗堟湰绠$悊
+	int admin; //绯荤粺绠$悊鍛�
+	UpdatePmsReq() {
+		head.type = QUERY_PMS_RES;
+		head.len = sizeof(UpdatePmsReq);
+	}
+} ;
+
+// 鍗曚釜浜哄憳鍜屾潈闄愯仈鍚堟煡璇㈢粨鏋勪綋
+ struct PmsRes {
+	int queryHistory;
+	int loggerSearch;
+	int mapMark;
+	int devManage;
+	int productPlan;
+	int id;
+
+	char userNo[32];
+	char name[32];
+
+	char permissonType[32];  // 瑙掕壊绫诲瀷
+	int versionManage; //鐗堟湰绠$悊
+	int admin; //绯荤粺绠$悊鍛�
+	char department[32];
+	char loginTime[32];
+	char registerTime[32];
+};
+
+// 鏌ヨ浜哄憳鍜岃鑹蹭俊鎭殑鍝嶅簲缁撴瀯浣�
+ struct QueryPmsRes {
+	Head head;
+	int success; // 1涓烘垚鍔� ,0涓哄け璐�
+	PmsRes pmsList[0];
+	QueryPmsRes() {
+		head.type = QUERY_PMS_REQ;
+	}
+};
+
+// 鏉冮檺鏇存柊缁撴灉鍝嶅簲浣�
+struct UpdatePmsRes {
+	Head head;
+	int success; // 1涓烘垚鍔� ,0涓哄け璐�
+	UpdatePmsRes() {
+		head.type = UPDATE_PMS_RES;
+		head.len = sizeof(UpdatePmsRes);
+	}
+
+};
+
+
+
+
+//璁惧绠$悊
+struct DevicesInfo
+{
+	int deviceID;
+	char deviceName[32];//璁惧鍚嶇О
+	char deviceStatus[32];//璁惧鐘舵��
+	char manufacturer[100];//鍘傚
+	char devicesType[32];//璁惧绫诲瀷
+	double longitude;//缁忓害
+	double latitude;//绾害
+	char purchasingTime[15];//璐拱鏃堕棿
+	char installTime[15];//瀹夎鏃堕棿
+	char devicesSerialNumber[32];//璁惧缂栫爜
+};
+//娣诲姞璁惧
+struct ADReq//娣诲姞璇锋眰
+{
+	Head head;
+	char deviceName[32];
+	ADReq() {
+		head.type = AD_REQ;
+		head.len = sizeof(ADReq);
+	}
+
+};
+
+struct ADRes//娣诲姞鍝嶅簲
+{
+	Head head;
+	int type;
+	ADRes() {
+		head.type = AD_RES;
+		head.len = sizeof(ADRes);
+	}
+
+};
+//淇敼璁惧
+struct MDRes//淇敼璇锋眰
+{
+	Head head;
+	DevicesInfo info;
+	MDRes() {
+		head.type = MD_RES;
+		head.len = sizeof(MDRes);
+	}
+};
+struct MDReq//淇敼鍝嶅簲
+{
+	Head head;
+	int type;
+	MDReq() {
+		head.type = MD_REQ;
+		head.len = sizeof(MDReq);
+	}
+};
+//鏌ヨ璁惧
+struct QDReq//鏌ヨ璇锋眰
+{
+	Head head;
+	DevicesInfo info;
+	QDReq() {
+		head.type = QD_REQ;
+		head.len = sizeof(QDReq);
+	}
+};
+struct QDRes//鏌ヨ鍝嶅簲
+{
+	Head head;
+	int type;
+	QDRes() {
+		head.type = QD_RES;
+		head.len = sizeof(QDRes);
+	}
+};
+
+
+//鍦板浘鏍囨敞
+struct MarkInfo
+{
+	int markId;//鏍囨敞鐐筰d
+	double latitude;//绾害
+	double longitude;//缁忓害
+	int deviceId;//璁惧ID
+	int deviceStatus;//璁惧鐘舵��
+	char deviceName[32];//璁惧鍚嶇О
+};
+//鍦板浘鏍囨敞鍔犺浇璇锋眰
+struct MMLReq//鍦板浘
+{
+	Head head;
+	MMLReq() {
+		head.type = MML_REQ;
+		head.len = sizeof(MMLReq);
+	}
+};
+//鍦板浘鏍囨敞鍔犺浇鍝嶅簲锛�
+struct MMLRes
+{
+	Head head;
+	int status;//鎿嶄綔鐘舵��
+	MarkInfo info[0];
+	MMLRes() {
+		head.type = MML_RES;
+		head.len = sizeof(MMLRes);
+	}
+};
+//鍦板浘鏍囨敞鎻掑叆璇锋眰
+struct MMIReq//鍦板浘
+{
+	Head head;
+	MarkInfo info[0];
+	MMIReq() {
+		head.type = MMI_REQ;
+		head.len = sizeof(MMIReq);
+	}
+};
+//鍦板浘鏍囨敞鎻掑叆鍝嶅簲锛�
+struct MMIRes
+{
+	Head head;
+	int status;//鎿嶄綔鐘舵��
+	MarkInfo info[0];
+	MMIRes() {
+		head.type = MMI_RES;
+		head.len = sizeof(MMIRes);
+	}
+};
+
+//鍦板浘鏍囨敞鍒犻櫎璇锋眰
+struct MMDReq//鍦板浘
+{
+	Head head;
+	MarkInfo info[0];
+	MMDReq() {
+		head.type = MMD_REQ;
+		head.len = sizeof(MMDReq);
+	}
+};
+//鍦板浘鏍囨敞鍒犻櫎鍝嶅簲锛�
+struct MMDRes
+{
+	Head head;
+	int status;//鎿嶄綔鐘舵��
+	MarkInfo info[0];
+	MMDRes() {
+		head.type = MMD_RES;
+		head.len = sizeof(MMDRes);
+	}
+};
+
+//澶у睆鏄剧ず
+//鐜鏁版嵁璇锋眰
+struct EnvironmentReq
+{
+	Head head;
+	EnvironmentReq() {
+		head.type = ENVIRONMENT_REQ;
+		head.len = sizeof(EnvironmentReq);
+	}
+};
+//鐜鏁版嵁鍝嶅簲
+struct Environment
+{
+	double longitude;//缁忓害
+	double latitude;//绾害
+	float temp;//娓╁害
+	float humidity;//婀垮害
+	float oxygen;//姘ф皵娴撳害
+	float carbon;//涓�姘у寲纰虫祿搴�
+};
+struct EnvironmentRes
+{
+	Head head;
+	int status;
+	Environment environment[0];
+	EnvironmentRes() {
+		head.type = ENVIRONMENT_RES;
+		head.len = sizeof(EnvironmentRes);
+	}
+};
+//璁惧鐘舵�佽姹�
+struct DeviceStatusReq
+{
+	Head head;
+	DeviceStatusReq() {
+		head.type = DEVICESTATUS_REQ;
+		head.len = sizeof(DeviceStatusReq);
+	}
+};
+//璁惧鐘舵�佸搷搴�
+struct DeviceStatus
+{
+	double longitude;//缁忓害
+	double latitude;//绾害
+	int deviceID;//璁惧缂栧彿
+	char deviceName[32];//璁惧鍚嶇О
+	char deviceStatus[32];//璁惧鐘舵��
+};
+struct DeviceStatusRes
+{
+	Head head;
+	int status;
+	DeviceStatus deviceStatus[0];
+	DeviceStatusRes() {
+		head.type = DEVICESTATUS_RES;
+		head.len = sizeof(DeviceStatusRes);
+	}
+};
+//鎿嶄綔鏃ュ織璇锋眰
+struct MovementRecordReq
+{
+	Head head;
+	MovementRecordReq() {
+		head.type = MOVEMENTRECORD_REQ;
+		head.len = sizeof(MovementRecordReq);
+	}
+};
+//鎿嶄綔鏃ュ織鍝嶅簲
+struct MovementRecord
+{
+	double longitude;//缁忓害
+	double latitude;//绾害
+	char userName;//鎿嶄綔鐢ㄦ埛鍚�
+	char operateTime[32];//鎿嶄綔鏃堕棿
+	char deviceName[32];//鎿嶄綔璁惧
+	char movement[256];//鎿嶄綔鎻忚堪
+};
+struct MovementRecordRes
+{
+	Head head;
+	int status;
+	MovementRecord movementRecord[0];
+	MovementRecordRes() {
+		head.type = MOVEMENTRECORD_RES;
+		head.len = sizeof(MovementRecordRes);
+	}
+};
+//璀︽姤璁板綍璇锋眰
+struct AlarmRecordReq
+{
+	Head head;
+	AlarmRecordReq() {
+		head.type = ALARMRECORD_REQ;
+		head.len = sizeof(AlarmRecordReq);
+	}
+};
+//璀︽姤璁板綍鍝嶅簲
+struct AlarmRecord
+{
+	double longitude;//缁忓害
+	double latitude;//绾害
+	char alarmTime[32];//璀︽姤鏃堕棿
+	char alarmtype[32];//澶勭悊鏃堕棿
+	char alarmContent[256];//璀︽姤鍐呭
+};
+struct AlarmRecordRes
+{
+	Head head;
+	int status;
+	AlarmRecord alarmRecord[0];
+	AlarmRecordRes() {
+		head.type = ALARMRECORD_RES;
+		head.len = sizeof(AlarmRecordRes);
+	}
+};
+//鐓ょ熆浜ч噺璇锋眰
+struct YieldReq
+{
+	Head head;
+	YieldReq() {
+		head.type = YIELD_REQ;
+		head.len = sizeof(YieldReq);
+	}
+};
+//鐓ょ熆浜ч噺鍝嶅簲
+struct Yield
+{
+	int month;//鏈堜唤
+	int output;//浜ч噺
+};
+struct YieldRes
+{
+	Head head;
+	int status;
+	Yield yield[0];
+	YieldRes() {
+		head.type = YIELD_RES;
+		head.len = sizeof(YieldRes);
+	}
+};
+
+//璀︽姤绠$悊
+// 璀︽姤璇锋眰缁撴瀯浣�  
+struct WarningReq {
+	Head head;
+
+	float oxygenWarning;
+	float carbonWarning;
+	float tempWarning;
+	float humidityWarning;
+
+	WarningReq() {
+		head.type = WARNING_REQ;
+		head.len = sizeof(WarningReq);
+	}
+};
+
+
+struct DataThreshold {
+	//闃堝��
+	float oxygenThreshold;
+	float carbonThreshold;
+	float tempThreshold;
+	float humidityThreshold;
+};
+
+struct Data {
+	float oxygen;   // 姘ф皵娴撳害  
+	float carbon;   // 涓�姘у寲纰虫祿搴�  
+	float temp;     // 娓╁害  
+	float humidity; // 婀垮害 
+};
+
+// 璀︽姤鍝嶅簲缁撴瀯浣�  
+struct WarningRes {
+	Head head;
+	int status;         // 鍝嶅簲鐘舵�侊紙姣斿 0 琛ㄧず鎴愬姛锛�1 琛ㄧず澶辫触绛夛級  
+	const char* message; // 鍝嶅簲娑堟伅鎻忚堪  
+
+	WarningRes(int stat, const char* msg) {
+		head.type = WARNING_RES;
+		head.len = sizeof(WarningRes);
+		status = stat;
+		message = msg;
+	}
+};
+
+//鐢熶骇璁″垝绠$悊
+struct PdplanInfo
+{
+	int planId;//璁㈠崟缂栧彿
+	char planName[32];//璁㈠崟鍚嶅瓧
+	char startDate[32];//璧峰鏃ユ湡
+	char closingDate[32];//浜や粯鏃ユ湡
+	char pdName[8];//浜у搧鍚�
+	double plannedPd;//璁″垝鐢熶骇閲�
+	double actualPd;//瀹為檯鐢熶骇閲�
+	double progress;//鐢熶骇杩涘害
+	int finishOntime;//鏄惁鎸夋湡瀹屾垚
+};
+
+struct MonoutputInfo
+{
+	int month;//鏈堜唤
+	double aOutput;//a浜у搧鏈堜骇閲�
+	double bOutput;//b浜у搧鏈堜骇閲�
+	double cOutput;//c浜у搧鏈堜骇閲�
+};
+
+//娣诲姞涓�鏉$敓浜ц鍒掔殑璇锋眰缁撴瀯浣�
+struct AddPdplanReq
+{
+	Head head;
+	PdplanInfo info[0];
+	AddPdplanReq() {
+		head.type = ADD_PDPLAN_REQ;
+		head.len = sizeof(AddPdplanReq);
+	}
+};
+
+//娣诲姞涓�鏉$敓浜ц鍒掔殑鍝嶅簲缁撴瀯浣�
+struct AddPdplanRes
+{
+	Head head;
+	int status;//琛ㄧず鏄惁娣诲姞鎴愬姛锛�0鍚�1鏄�
+	AddPdplanRes() {
+		head.type = ADD_PDPLAN_RES;
+		head.len = sizeof(AddPdplanRes);
+	}
+};
+
+//鍒犻櫎涓�鏉$敓浜ц鍒掔殑璇锋眰缁撴瀯浣�
+struct DelPdplanReq
+{
+	Head head;
+	PdplanInfo info[0];
+	DelPdplanReq() {
+		head.type = DEL_PDPLAN_REQ;
+		head.len = sizeof(DelPdplanReq);
+	}
+};
+
+//鍒犻櫎涓�鏉$敓浜ц鍒掔殑鍝嶅簲缁撴瀯浣�
+struct DelPdplanRes
+{
+	Head head;
+	int status;//琛ㄧず鏄惁鍒犻櫎鎴愬姛锛�0鍚�1鏄�
+	DelPdplanRes() {
+		head.type = DEL_PDPLAN_RES;
+		head.len = sizeof(DelPdplanRes);
+	}
+};
+
+//鏇存敼涓�鏉$敓浜ц鍒掔殑璇锋眰缁撴瀯浣�.
+struct UpdatePdplanReq
+{
+	Head head;
+	PdplanInfo info[0];
+	UpdatePdplanReq() {
+		head.type = UPDATE_PDPLAN_REQ;
+		head.len = sizeof(UpdatePdplanReq);
+	}
+};
+
+//鏇存敼涓�鏉$敓浜ц鍒掔殑鍝嶅簲缁撴瀯浣�
+struct UpdatePdplanRes
+{
+	Head head;
+	int status;//琛ㄧず鏄惁鏇存柊鎴愬姛锛�0鍚�1鏄�
+	PdplanInfo info[0];
+	UpdatePdplanRes() {
+		head.type = UPDATE_PDPLAN_RES;
+		head.len = sizeof(UpdatePdplanRes);
+	}
+};
+
+//鏌ヨ涓�鏉$敓浜ц鍒掔殑璇锋眰缁撴瀯浣�
+struct QueryPdplanReq
+{
+	Head head;
+	int planId;//璁㈠崟缂栧彿
+	char planName[32];//璁㈠崟鍒掑悕瀛�
+	char startDate[32];//璧峰鏃ユ湡
+	char closingDate[32];//浜や粯鏃ユ湡
+	char pdName[8];//浜у搧鍚�
+	double plannedPd;//璁″垝鐢熶骇閲�
+	double actualPd;//瀹為檯鐢熶骇閲�
+	double progress;//鐢熶骇杩涘害
+	int finishOntime;//鏄惁鎸夋湡瀹屾垚
+	QueryPdplanReq() {
+		head.type = QUERY_PDPLAN_REQ;
+		head.len = sizeof(QueryPdplanReq);
+	}
+};
+
+//鏌ヨ涓�鏉$敓浜ц鍒掔殑鍝嶅簲缁撴瀯浣�
+struct QueryPdplanRes
+{
+	Head head;
+	int status;//琛ㄧず鏄惁娣诲姞鎴愬姛锛�0鍚�1鏄�
+	PdplanInfo info[0];
+	QueryPdplanRes() {
+		head.type = QUERY_PDPLAN_RES;
+		head.len = sizeof(QueryPdplanRes);
+	}
+};
+
+
+//娣诲姞鏈堜骇閲忕殑璇锋眰缁撴瀯浣�
+struct AddMonoutputReq
+{
+	Head head;
+	MonoutputInfo info[0];
+	AddMonoutputReq() {
+		head.type = ADD_MONOUTPUT_REQ;
+		head.len = sizeof(AddMonoutputReq);
+	}
+};
+
+//娣诲姞鏈堜骇閲忕殑鍝嶅簲缁撴瀯浣�
+struct AddMonoutputRes
+{
+	Head head;
+	int status;//琛ㄧず鏄惁娣诲姞鎴愬姛锛�0鍚�1鏄�
+	AddMonoutputRes() {
+		head.type = ADD_MONOUTPUT_RES;
+		head.len = sizeof(AddMonoutputRes);
+	}
+};
+
+//鍒犻櫎鏈堜骇閲忕殑璇锋眰缁撴瀯浣�
+struct DelMonoutputReq
+{
+	Head head;
+	MonoutputInfo info[0];
+	DelMonoutputReq() {
+		head.type = DEL_MONOUTPUT_REQ;
+		head.len = sizeof(DelMonoutputReq);
+	}
+};
+
+//鍒犻櫎鏈堜骇閲忕殑鍝嶅簲缁撴瀯浣�
+struct DelMonoutputRes
+{
+	Head head;
+	int status;//琛ㄧず鏄惁鍒犻櫎鎴愬姛锛�0鍚�1鏄�
+	DelMonoutputRes() {
+		head.type = DEL_MONOUTPUT_RES;
+		head.len = sizeof(DelMonoutputRes);
+	}
+};
+
+//鏇存敼鏈堜骇閲忕殑璇锋眰缁撴瀯浣�.
+struct UpdateMonoutputReq
+{
+	Head head;
+	MonoutputInfo info[0];
+	UpdateMonoutputReq() {
+		head.type = UPDATE_MONOUTPUT_REQ;
+		head.len = sizeof(UpdateMonoutputReq);
+	}
+};
+
+//鏇存敼鏈堜骇閲忕殑鍝嶅簲缁撴瀯浣�
+struct UpdateMonoutputRes
+{
+	Head head;
+	int status;//琛ㄧず鏄惁鏇存柊鎴愬姛锛�0鍚�1鏄�
+	MonoutputInfo info[0];
+	UpdateMonoutputRes() {
+		head.type = UPDATE_MONOUTPUT_RES;
+		head.len = sizeof(UpdateMonoutputRes);
+	}
+};
+
+//鏌ヨ鏈堜骇閲忕殑璇锋眰缁撴瀯浣�
+struct QueryMonoutputReq
+{
+	Head head;
+	int month;//鏈堜唤
+	double aOutput;//a浜у搧鏈堜骇閲�
+	double bOutput;//b浜у搧鏈堜骇閲�
+	double cOutput;//c浜у搧鏈堜骇閲�
+	QueryMonoutputReq() {
+		head.type = QUERY_MONOUTPUT_REQ;
+		head.len = sizeof(QueryMonoutputReq);
+	}
+};
+
+//鏌ヨ鏈堜骇閲忕殑鍝嶅簲缁撴瀯浣�
+struct QueryMonoutputRes
+{
+	Head head;
+	int status;//琛ㄧず鏄惁娣诲姞鎴愬姛锛�0鍚�1鏄�
+	MonoutputInfo info[0];
+	QueryMonoutputRes() {
+		head.type = QUERY_MONOUTPUT_RES;
+		head.len = sizeof(QueryMonoutputRes);
+	}
+};
+
+
+
+//鍘嗗彶鏌ヨ鍒嗘瀽
+// 鍘嗗彶鏌ヨ璇锋眰缁撴瀯浣�
+struct HistoryQueryReq {
+	Head head;
+	//鏍规嵁鏃堕棿鑼冨洿鏌ヨ
+	char startTime[32];
+	char endTime[32];
+	//鍏抽敭瀛楁煡璇�
+	char keyWord[32];
+	HistoryQueryReq() {
+		// 鍒濆鍖栨暟鎹ご
+		head.type = QUERY_MONOUTPUT_REQ;
+		head.len = sizeof(HistoryQueryReq);
+		// 鍒濆鍖栨煡璇㈡潯浠跺瓧娈�
+        memset(startTime, 0, sizeof(startTime));
+        memset(endTime, 0, sizeof(endTime));
+
+	}
+};
+
+// 鍘嗗彶鏌ヨ鍝嶅簲缁撴瀯浣�
+
+// 绯荤粺杩愯鐘舵�佽〃鐩稿叧淇℃伅
+struct HistroyInfo {
+	WarningRes warn;//璀︽姤鏌ヨ
+	QDRes dev;//璁惧鏌ヨ
+	QueryPdplanRes  pro;//鐢熶骇璁″垝鏌ヨ
+};
+struct HistoryQueryRes {
+	Head head;
+	HistroyInfo sys[0];
+	HistoryQueryRes() {
+		// 鍒濆鍖栨暟鎹ご
+		head.type = QUERY_MONOUTPUT_RES;
+		head.len = sizeof(HistoryQueryRes);
+	}
+};
+
+
+//鑷姩鍗囩骇
+struct VersionNumReq        // 鐗堟湰鍙疯姹�
+{
+	Head head;
+	VersionNumReq() {
+		head.type = VERSION_NUM_REQ;
+		head.len = sizeof(VersionNumReq);
+	}
+};
+
+struct VersionNumRes        // 鐗堟湰鍙峰搷搴�
+{
+	Head head;
+	char versionId[64]; // 鐗堟湰鍙�
+	VersionNumRes() {
+		head.type = VERSION_NUM_RES;
+		head.len = sizeof(VersionNumRes);
+	}
+};
+
+// 鏂囦欢浼犺緭
+struct FileInfo
+{
+	char fileName[256];
+	long long fileSize;
+	char s_filepath[128];
+	char content[0];
+};
+
+struct UploadFileReq        // 涓婁紶鏂囦欢鐨勮姹�
+{
+	Head head;
+	FileInfo fileInfo;
+	UploadFileReq() {
+		head.type = UPLOAD_FILE_REQ;
+		head.len = sizeof(UploadFileReq);
+	}
+};
+
+struct UploadFileRes {      // 涓婁紶鏂囦欢鐨勫搷搴�
+	Head head;
+	bool state = false;
+	char fileName[256];
+	long long file_size;
+	UploadFileRes()
+	{
+		head.type = UPLOAD_FILE_RES;
+		head.len = sizeof(UploadFileRes);
+	}
+};
+
+// 鐗堟湰淇℃伅褰曞叆
+// 璇锋眰
+struct VersionInfoEntryReq {
+	Head head;
+	char versionId[64]; // 鐗堟湰鍙�
+	char versionIdOld[64]; // 涓婁竴涓増鏈彿
+	int fileNum;
+	char context[0];		//鍖呭惈涓嬭浇鏂囦欢淇℃伅
+
+	VersionInfoEntryReq()
+	{
+		head.type = VERSION_INFOENTRY_REQ;
+		head.len = sizeof(VersionInfoEntryReq);
+	}
+};
+
+// 鐗堟湰淇℃伅褰曞叆鍝嶅簲
+struct VersionInfoEntryRes {
+	Head head;
+	bool state = false;
+	VersionInfoEntryRes()
+	{
+		head.type = VERSION_INFOENTRY_RES;
+		head.len = sizeof(VersionInfoEntryRes);
+	}
+};
+
+// 鐗堟湰鏇存柊璇锋眰
+struct VersionUpdateReq {
+	Head head;
+
+	char curVersionId[64]; // 鐗堟湰鍙�
+	VersionUpdateReq()
+	{
+		head.type = VERSION_UPDATE_REQ;
+		head.len = sizeof(VersionUpdateReq);
+	}
+};
+
+// 鐗堟湰鏇存柊鍝嶅簲
+struct VersionUpdateRes {
+	Head head;
+	bool state = false;
+	char versionId[64]; // 鐗堟湰鍙�
+	char updateDate[32]; // 鏇存柊鏃堕棿
+	char versionDescription[1024]; //鏇存柊鎻忚堪
+
+	VersionUpdateRes()
+	{
+		head.type = VERSION_UPDATE_RES;
+		head.len = sizeof(VersionUpdateRes);
+	}
+};
+
+// 鐗堟湰鏇存柊鏂囦欢涓嬭浇璇锋眰
+struct FileDownloadsReq {
+	Head head;
+	char versionId[64]; // 鐗堟湰鍙�
+	FileDownloadsReq()
+	{
+		head.type = FILE_DOWNLOADS_REQ;
+		head.len = sizeof(FileDownloadsReq);
+	}
+};
+
+// 鐗堟湰鏇存柊鏂囦欢涓嬭浇鍝嶅簲
+struct FileDownloadsRes {
+	Head head;
+	char versionId[64]; // 鐗堟湰鍙�
+	char filename[128]; //鏂囦欢鍚�
+	long long filesize; //鏂囦欢澶у皬
+	char c_filepath[128];	//瀹㈡埛绔斁鏈�鏂扮増鏈殑鏈湴璺緞
+	int fileNum; // 鏂囦欢鏁伴噺
+	long long allFileSize; // 鏂囦欢鎬诲ぇ灏�
+	char content[0];
+	FileDownloadsRes()
+	{
+		head.type = FILE_DOWNLOADS_RES;
+		head.len = sizeof(FileDownloadsRes);
+	}
+};
+
+// 鏇存柊鏂囦欢涓嬭浇鎴愬姛鐨勫搷搴�
+struct DownloadSuccessfullyRes {
+	Head head;
+	bool state = false;
+	char fileName[256];
+	long long fileSize;
+	DownloadSuccessfullyRes()
+	{
+		head.type = DOWNLOAD_SUCCESSFULLY_RES;
+		head.len = sizeof(DownloadSuccessfullyRes);
+	}
+};
+
+
+//鏃ュ織
+struct ParsedLog {
+    int id;
+	char timeStamp[64]; // 鏃堕棿鎴�
+	char deviceId[64]; // 璁惧ID
+	char level[16];    // 鏃ュ織绾у埆
+	char content[256];  // 鏃ュ織鍐呭
+	char userId[64];    // 鐢ㄦ埛ID
+	char fileName[32];   //鏂囦欢鍚�
+    int problemLine;    //浜х敓閿欒琛屽彿
+	char functionName[32];  //鍑芥暟鍚�
+
+};
+
+// 鏃ュ織鏌ヨ璇锋眰缁撴瀯浣�
+struct LogQueryReq {
+    Head head;                      // 鏁版嵁澶�
+    char startTime[20]; // 鏍规嵁瀹為檯闇�瑕佽皟鏁村ぇ灏�
+    char endTime[20];   // 鏍规嵁瀹為檯闇�瑕佽皟鏁村ぇ灏�
+    char content[256];           // 鏃ュ織鍐呭
+    char level[16];                 //鏃ュ織绾у埆
+    char deviceId[64];             // 璁惧ID
+                                   // 鏃犲弬鏋勯�犲嚱鏁�
+    LogQueryReq() {
+        head.type = LOGSEARCH_REQ;
+        head.len = sizeof(LogQueryReq);
+    }
+};
+
+
+// 鏃ュ織鏌ヨ鍝嶅簲缁撴瀯浣�
+struct LogQueryRes {
+	Head head;
+	int status;                    // 鍝嶅簲鐘舵�� (濡� 0 琛ㄧず鎴愬姛锛岄潪 0 琛ㄧず澶辫触)
+    ParsedLog parsedLog[0];  // 浣跨敤鏌旀�ф暟缁勫瓨鍌ㄦ煡璇㈢粨鏋�
+
+	// 鏃犲弬鏋勯�犲嚱鏁�
+	LogQueryRes() {
+		head.type = LOGSEARCH_RES;
+		head.len = sizeof(LogQueryRes);
+	}
+};
+
+
+
+
+#endif // COMMON_H
diff --git "a/Client/\346\234\261\350\210\252/code/kunlunclient/kunlunclient.pro" "b/Client/\346\234\261\350\210\252/code/kunlunclient/kunlunclient.pro"
new file mode 100644
index 0000000..f335c61
--- /dev/null
+++ "b/Client/\346\234\261\350\210\252/code/kunlunclient/kunlunclient.pro"
@@ -0,0 +1,39 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2024-11-04T19:54:13
+#
+#-------------------------------------------------
+
+QT       += core gui network
+
+
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
+
+TARGET = kunlunclient
+TEMPLATE = app
+
+# The following define makes your compiler emit warnings if you use
+# any feature of Qt which has been marked as deprecated (the exact warnings
+# depend on your compiler). Please consult the documentation of the
+# deprecated API in order to know how to port your code away from it.
+DEFINES += QT_DEPRECATED_WARNINGS
+
+# You can also make your code fail to compile if you use deprecated APIs.
+# In order to do so, uncomment the following line.
+# You can also select to disable deprecated APIs only up to a certain version of Qt.
+#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
+
+
+SOURCES += \
+        main.cpp \
+        clientmainwindow.cpp \
+    logquery.cpp
+
+HEADERS += \
+        clientmainwindow.h \
+    logquery.h \
+    common.h
+
+FORMS += \
+        clientmainwindow.ui \
+    logquery.ui
diff --git "a/Client/\346\234\261\350\210\252/code/kunlunclient/kunlunclient.pro.user" "b/Client/\346\234\261\350\210\252/code/kunlunclient/kunlunclient.pro.user"
new file mode 100644
index 0000000..0cd92fe
--- /dev/null
+++ "b/Client/\346\234\261\350\210\252/code/kunlunclient/kunlunclient.pro.user"
@@ -0,0 +1,806 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE QtCreatorProject>
+<!-- Written by QtCreator 4.5.0, 2024-11-06T21:44:24. -->
+<qtcreator>
+ <data>
+  <variable>EnvironmentId</variable>
+  <value type="QByteArray">{197a2871-47a7-48be-824d-e8eb4f5b395c}</value>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.ActiveTarget</variable>
+  <value type="int">0</value>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.EditorSettings</variable>
+  <valuemap type="QVariantMap">
+   <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
+   <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
+   <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
+   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
+    <value type="QString" key="language">Cpp</value>
+    <valuemap type="QVariantMap" key="value">
+     <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
+    </valuemap>
+   </valuemap>
+   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
+    <value type="QString" key="language">QmlJS</value>
+    <valuemap type="QVariantMap" key="value">
+     <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
+    </valuemap>
+   </valuemap>
+   <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
+   <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
+   <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
+   <value type="int" key="EditorConfiguration.IndentSize">4</value>
+   <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
+   <value type="int" key="EditorConfiguration.MarginColumn">80</value>
+   <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
+   <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
+   <value type="int" key="EditorConfiguration.PaddingMode">1</value>
+   <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
+   <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
+   <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
+   <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
+   <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
+   <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
+   <value type="int" key="EditorConfiguration.TabSize">8</value>
+   <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
+   <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
+   <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
+   <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
+   <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
+   <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.PluginSettings</variable>
+  <valuemap type="QVariantMap"/>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.Target.0</variable>
+  <valuemap type="QVariantMap">
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.9.4 MinGW 32bit</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.9.4 MinGW 32bit</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.594.win32_mingw53_kit</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">B:/Qt/QtProject/build-kunlunclient-Desktop_Qt_5_9_4_MinGW_32bit-Debug</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+     </valuemap>
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">鏋勫缓</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+    </valuemap>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">娓呯悊</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
+    <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+   </valuemap>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">B:/Qt/QtProject/build-kunlunclient-Desktop_Qt_5_9_4_MinGW_32bit-Release</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
+      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+     </valuemap>
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">鏋勫缓</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+    </valuemap>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">娓呯悊</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+    <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+   </valuemap>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">B:/Qt/QtProject/build-kunlunclient-Desktop_Qt_5_9_4_MinGW_32bit-Profile</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+     </valuemap>
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">鏋勫缓</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+    </valuemap>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">娓呯悊</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+    <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+   </valuemap>
+   <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">閮ㄧ讲</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">鍦ㄦ湰鍦伴儴缃�</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
+   </valuemap>
+   <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
+    <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
+    <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
+    <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
+    <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
+    <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
+    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
+    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
+    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
+    <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
+    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
+    <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
+    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
+    <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
+    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
+    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
+     <value type="int">0</value>
+     <value type="int">1</value>
+     <value type="int">2</value>
+     <value type="int">3</value>
+     <value type="int">4</value>
+     <value type="int">5</value>
+     <value type="int">6</value>
+     <value type="int">7</value>
+     <value type="int">8</value>
+     <value type="int">9</value>
+     <value type="int">10</value>
+     <value type="int">11</value>
+     <value type="int">12</value>
+     <value type="int">13</value>
+     <value type="int">14</value>
+    </valuelist>
+    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
+    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">kunlunclient</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:B:/Qt/QtProject/kunlunclient/kunlunclient.pro</value>
+    <value type="bool" key="QmakeProjectManager.QmakeRunConfiguration.UseLibrarySearchPath">true</value>
+    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
+    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">kunlunclient.pro</value>
+    <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
+    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
+    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default">B:/Qt/QtProject/build-kunlunclient-Desktop_Qt_5_9_4_MinGW_32bit-Debug</value>
+    <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
+    <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
+    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
+    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
+    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+   </valuemap>
+   <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.Target.1</variable>
+  <valuemap type="QVariantMap">
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.9.4 MSVC2015 32bit</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.9.4 MSVC2015 32bit</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.594.win32_msvc2015_kit</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">B:/Qt/QtProject/build-kunlunclient-Desktop_Qt_5_9_4_MSVC2015_32bit-Debug</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+     </valuemap>
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">鏋勫缓</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+    </valuemap>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">娓呯悊</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
+    <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+   </valuemap>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">B:/Qt/QtProject/build-kunlunclient-Desktop_Qt_5_9_4_MSVC2015_32bit-Release</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
+      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+     </valuemap>
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">鏋勫缓</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+    </valuemap>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">娓呯悊</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+    <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+   </valuemap>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">B:/Qt/QtProject/build-kunlunclient-Desktop_Qt_5_9_4_MSVC2015_32bit-Profile</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+     </valuemap>
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">鏋勫缓</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+    </valuemap>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">娓呯悊</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+    <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+   </valuemap>
+   <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">閮ㄧ讲</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">鍦ㄦ湰鍦伴儴缃�</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
+   </valuemap>
+   <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
+    <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
+    <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
+    <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
+    <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
+    <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
+    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
+    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
+    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
+    <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
+    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
+    <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
+    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
+    <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
+    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
+    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
+     <value type="int">0</value>
+     <value type="int">1</value>
+     <value type="int">2</value>
+     <value type="int">3</value>
+     <value type="int">4</value>
+     <value type="int">5</value>
+     <value type="int">6</value>
+     <value type="int">7</value>
+     <value type="int">8</value>
+     <value type="int">9</value>
+     <value type="int">10</value>
+     <value type="int">11</value>
+     <value type="int">12</value>
+     <value type="int">13</value>
+     <value type="int">14</value>
+    </valuelist>
+    <value type="int" key="PE.EnvironmentAspect.Base">-1</value>
+    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+    <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Arguments"></value>
+    <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value>
+    <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.WorkingDirectory">%{buildDir}</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Custom Executable</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
+    <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
+    <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
+    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
+    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
+    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+   </valuemap>
+   <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.Target.2</variable>
+  <valuemap type="QVariantMap">
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.9.4 MSVC2015 64bit</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.9.4 MSVC2015 64bit</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.594.win64_msvc2015_64_kit</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">B:/Qt/QtProject/build-kunlunclient-Desktop_Qt_5_9_4_MSVC2015_64bit-Debug</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+     </valuemap>
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">鏋勫缓</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+    </valuemap>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">娓呯悊</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
+    <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+   </valuemap>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">B:/Qt/QtProject/build-kunlunclient-Desktop_Qt_5_9_4_MSVC2015_64bit-Release</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
+      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+     </valuemap>
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">鏋勫缓</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+    </valuemap>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">娓呯悊</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+    <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+   </valuemap>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">B:/Qt/QtProject/build-kunlunclient-Desktop_Qt_5_9_4_MSVC2015_64bit-Profile</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+     </valuemap>
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">鏋勫缓</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+    </valuemap>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">娓呯悊</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+    <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+   </valuemap>
+   <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">閮ㄧ讲</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">鍦ㄦ湰鍦伴儴缃�</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
+   </valuemap>
+   <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
+    <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
+    <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
+    <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
+    <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
+    <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
+    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
+    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
+    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
+    <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
+    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
+    <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
+    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
+    <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
+    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
+    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
+     <value type="int">0</value>
+     <value type="int">1</value>
+     <value type="int">2</value>
+     <value type="int">3</value>
+     <value type="int">4</value>
+     <value type="int">5</value>
+     <value type="int">6</value>
+     <value type="int">7</value>
+     <value type="int">8</value>
+     <value type="int">9</value>
+     <value type="int">10</value>
+     <value type="int">11</value>
+     <value type="int">12</value>
+     <value type="int">13</value>
+     <value type="int">14</value>
+    </valuelist>
+    <value type="int" key="PE.EnvironmentAspect.Base">-1</value>
+    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+    <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Arguments"></value>
+    <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value>
+    <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.WorkingDirectory">%{buildDir}</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Custom Executable</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
+    <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
+    <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
+    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
+    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
+    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+   </valuemap>
+   <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.TargetCount</variable>
+  <value type="int">3</value>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
+  <value type="int">18</value>
+ </data>
+ <data>
+  <variable>Version</variable>
+  <value type="int">18</value>
+ </data>
+</qtcreator>
diff --git "a/Client/\346\234\261\350\210\252/code/kunlunclient/logquery.cpp" "b/Client/\346\234\261\350\210\252/code/kunlunclient/logquery.cpp"
new file mode 100644
index 0000000..cfc075c
--- /dev/null
+++ "b/Client/\346\234\261\350\210\252/code/kunlunclient/logquery.cpp"
@@ -0,0 +1,216 @@
+锘�#include "logquery.h"
+#include "ui_logquery.h"
+#include <QTcpSocket>
+#include <QMessageBox>
+#include <QStandardItemModel>
+#pragma execution_character_set("utf-8")
+
+
+
+LogQuery::LogQuery(QWidget *parent) :
+    QMainWindow(parent),
+    ui(new Ui::LogQuery)
+{
+    ui->setupUi(this);
+
+    m_client = nullptr;//缃┖
+
+}
+
+LogQuery::LogQuery(QTcpSocket *client, QWidget *parent):
+    QMainWindow(parent),
+    ui(new Ui::LogQuery)
+{
+     ui->setupUi(this);
+
+     connect(ui->comboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(onComboBoxIndexChanged(int)));
+     ui->dateTimeEdit_end->setDateTime(QDateTime::currentDateTime());
+     //鎷変几 鏁堟灉
+     ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
+     ui->spinBox->setValue(10);
+
+//     int nWidth = ui->tableView->width();
+//     ui->tableView->setColumnWidth(0, qRound(nWidth*0.1));
+//     ui->tableView->setColumnWidth(1, qRound(nWidth*0.5));
+//     ui->tableView->setColumnWidth(2, qRound(nWidth*0.3));
+//     ui->tableView->setColumnWidth(3, qRound(nWidth*0.15));
+//     ui->tableView->setColumnWidth(4, qRound(nWidth*0.15));
+//     ui->tableView->setColumnWidth(5, qRound(nWidth*0.3));
+//     ui->tableView->setColumnWidth(6, qRound(nWidth*0.3));
+//     ui->tableView->setColumnWidth(7, qRound(nWidth*0.3));
+//     ui->tableView->setColumnWidth(8, qRound(nWidth*0.3));
+
+
+
+     m_client = client;//鍏变韩濂楁帴瀛�
+}
+
+LogQuery::~LogQuery()
+{
+    delete ui;
+}
+
+void LogQuery::on_pushButton_search_clicked()
+{
+    QString selectedFilter = ui->comboBox->currentText();
+    QByteArray request;
+
+    // 鍔ㄦ�佸垎閰嶈姹傜粨鏋勪綋
+    int size = sizeof(LogQueryReq) + sizeof(ParsedLog);
+    LogQueryReq* req = (LogQueryReq*)new char[size];
+
+    req->head.type = LOGSEARCH_REQ;
+    req->head.len = size;
+
+    // 鍒濆鍖栬姹傛暟鎹�
+    initializeRequestData(req);
+
+    // 鏍规嵁閫夊畾鐨勭瓫閫夋潯浠跺~鍏呰姹傛暟鎹�
+    if (selectedFilter == "鏃堕棿") {
+
+        QString startTime = ui->dateTimeEdit_start->dateTime().toString("yyyy-MM-dd HH:mm:ss");
+        QString endTime = ui->dateTimeEdit_end->dateTime().toString("yyyy-MM-dd HH:mm:ss");
+
+        // 灏嗗紑濮嬫椂闂村拰缁撴潫鏃堕棿璁剧疆鍒拌姹備腑
+        strcpy(req->startTime, startTime.toLocal8Bit().constData());
+        strcpy(req->endTime, endTime.toLocal8Bit().constData());
+    } else if (selectedFilter == "鏃ュ織鍐呭" || selectedFilter == "鏃ュ織绾у埆" || selectedFilter == "璁惧ID") {
+        QString filterValue = ui->lineEdit->text();
+        if (filterValue.isEmpty()) {
+            QMessageBox::warning(this, "璀﹀憡", "璇疯緭鍏ョ瓫閫夋潯浠讹紒");
+            delete[] req; // 閲婃斁鍐呭瓨
+            return;
+        }
+
+        // 鏍规嵁绛涢�夋潯浠跺~鍏呯浉搴旂殑瀛楁
+        if (selectedFilter == "鏃ュ織鍐呭") {
+
+            strcpy(req->content, filterValue.toLocal8Bit().data());
+        } else if (selectedFilter == "鏃ュ織绾у埆") {
+
+            strcpy(req->level, filterValue.toLocal8Bit().data());
+        } else if (selectedFilter == "璁惧ID") {
+
+            strcpy(req->deviceId, filterValue.toLocal8Bit().data());
+        }
+    } else {
+        QMessageBox::warning(this, "璀﹀憡", "璇烽�夋嫨鏈夋晥鐨勭瓫閫夋潯浠讹紒");
+        delete[] req; // 閲婃斁鍐呭瓨
+        return;
+    }
+
+    // 灏嗙粨鏋勪綋杞负 QByteArray
+    request = QByteArray((char*)(req), req->head.len);
+
+    // 鍙戦�佽姹�
+    if (m_client != nullptr) {
+        qDebug() << __FUNCTION__ << m_client->write(request);
+    }
+
+    // 閲婃斁鍐呭瓨
+    delete[] req;
+    currentPage = 1;
+    // 閲嶆柊璁$畻鎬婚〉鏁�
+    totalPages = (logs.size() + logsPerPage - 1) / logsPerPage;
+    displayCurrentPage();
+    updatePageLabel();
+
+}
+
+void LogQuery::queryResSlot(LogQueryRes *res)
+{
+    if (res->status == 1) {
+       // 瑙f瀽鏃ュ織鏁版嵁
+       logs.clear();
+
+       int maxLogs = ui->spinBox->value();
+       int logCount = (res->head.len - sizeof(LogQueryRes)) / sizeof(ParsedLog);
+       qDebug()<<"logcount = "<<logCount;
+       int displayCount = qMin(maxLogs, logCount); // 鏄剧ず鏁伴噺涓嶈秴杩囨渶澶у��
+       for (int i = 0; i < displayCount; ++i) {
+           logs.append(res->parsedLog[i]);
+       }
+
+       totalPages = (logs.size()+logsPerPage -1)/ logsPerPage;//璁$畻鎬婚〉鏁�
+       currentPage = 1; // 閲嶇疆椤电爜
+       updatePageLabel();//鏇存柊鏍囩
+       displayCurrentPage(); // 鏄剧ず绗竴椤�
+        }
+    else{
+        ui->tableView->setModel(nullptr);
+        QMessageBox::warning(this, "璀﹀憡", "鏃犵浉鍏冲唴瀹�");
+
+    }
+}
+
+void LogQuery::initializeRequestData(LogQueryReq *req)
+{
+    req->startTime[0] = '\0';
+    req->endTime[0] = '\0';
+    req->level[0] = '\0';
+    req->deviceId[0] = '\0';
+    req->content[0] = '\0';
+}
+
+void LogQuery::updatePageLabel()
+{
+    ui->label_currentPage->setText(QString("褰撳墠椤碉細%1 / %2").arg(currentPage).arg(totalPages));
+    // 濡傛灉鍙湁涓�椤垫垨鑰呮病鏈夋暟鎹紝绂佺敤涓婁笅椤垫寜閽�
+    ui->pushButton_up->setEnabled(currentPage > 1);           // 绂佺敤涓婁竴椤垫寜閽�
+    ui->pushButton_down->setEnabled(currentPage < totalPages); // 绂佺敤涓嬩竴椤垫寜閽�
+}
+
+
+void LogQuery::on_pushButton_up_clicked()
+{
+    if (currentPage > 0) {
+           --currentPage;
+           updatePageLabel();
+           displayCurrentPage();  // 鏄剧ず涓婁竴椤�
+       }
+}
+
+void LogQuery::on_pushButton_down_clicked()
+{
+    if (currentPage < totalPages) {
+        ++currentPage;
+        updatePageLabel();
+        displayCurrentPage();
+    }
+}
+
+void LogQuery::onComboBoxIndexChanged(int index)
+{
+    ui->lineEdit->clear();
+}
+
+void LogQuery::displayCurrentPage()
+{
+        QStandardItemModel* model = new QStandardItemModel();
+        model->setHorizontalHeaderLabels({"ID", "鏃堕棿", "璁惧ID", "鏃ュ織绾у埆", "鏃ュ織鍐呭", "鐢ㄦ埛ID", "閿欒鏂囦欢鍚�", "閿欒琛屽彿", "閿欒鍑芥暟鍚�"});
+
+        int start = (currentPage -1)* logsPerPage;
+        int end = qMin(start + logsPerPage, logs.size());
+
+        // 濉厖褰撳墠椤电殑鏃ュ織鏉$洰
+        for (int i = start; i < end; ++i) {
+            ParsedLog parsedLog = logs[i];
+            QList<QStandardItem *> rowItems;
+
+            rowItems.append(new QStandardItem(QString::number(parsedLog.id)));
+            rowItems.append(new QStandardItem(QString::fromLocal8Bit(parsedLog.timeStamp)));
+            rowItems.append(new QStandardItem(QString::fromLocal8Bit(parsedLog.deviceId)));
+            rowItems.append(new QStandardItem(QString::fromLocal8Bit(parsedLog.level)));
+            rowItems.append(new QStandardItem(QString::fromLocal8Bit(parsedLog.content)));
+            rowItems.append(new QStandardItem(QString::fromLocal8Bit(parsedLog.userId)));
+            rowItems.append(new QStandardItem(QString::fromLocal8Bit(parsedLog.fileName)));
+            rowItems.append(new QStandardItem(QString::number(parsedLog.problemLine)));
+            rowItems.append(new QStandardItem(QString::fromLocal8Bit(parsedLog.functionName)));
+
+            model->appendRow(rowItems);
+        }
+
+        // 鏇存柊琛ㄦ牸瑙嗗浘
+        ui->tableView->setModel(model);
+        ui->tableView->resizeColumnsToContents();
+}
diff --git "a/Client/\346\234\261\350\210\252/code/kunlunclient/logquery.h" "b/Client/\346\234\261\350\210\252/code/kunlunclient/logquery.h"
new file mode 100644
index 0000000..4fe6a49
--- /dev/null
+++ "b/Client/\346\234\261\350\210\252/code/kunlunclient/logquery.h"
@@ -0,0 +1,49 @@
+锘�#ifndef LOGQUERY_H
+#define LOGQUERY_H
+
+#include <QMainWindow>
+#include "common.h"
+#include <QTcpSocket>
+#pragma execution_character_set("utf-8")
+
+
+namespace Ui {
+class LogQuery;
+}
+
+class LogQuery : public QMainWindow
+{
+    Q_OBJECT
+
+public:
+    explicit LogQuery(QWidget *parent = 0);
+    explicit LogQuery(QTcpSocket *client,QWidget *parent = 0);
+    ~LogQuery();
+
+private slots:
+    void on_pushButton_search_clicked();
+
+    void queryResSlot(LogQueryRes *res);
+
+    void on_pushButton_up_clicked();
+
+    void on_pushButton_down_clicked();
+
+    void onComboBoxIndexChanged(int index);
+
+private:
+    void displayCurrentPage();
+    Ui::LogQuery *ui;
+    QTcpSocket *m_client;
+
+    QVector<ParsedLog> logs;
+
+    int currentPage = 1;    // 褰撳墠椤电爜锛屼粠1寮�濮�
+    int totalPages = 1;     // 鎬婚〉鏁�
+    const int logsPerPage = 10;   // 姣忛〉鏄剧ず鐨勬棩蹇楁暟閲�
+
+    void initializeRequestData(LogQueryReq* req);//鍒濆鍖栬姹傛暟鎹�
+    void updatePageLabel();
+};
+
+#endif // LOGQUERY_H
diff --git "a/Client/\346\234\261\350\210\252/code/kunlunclient/logquery.ui" "b/Client/\346\234\261\350\210\252/code/kunlunclient/logquery.ui"
new file mode 100644
index 0000000..4bfb989
--- /dev/null
+++ "b/Client/\346\234\261\350\210\252/code/kunlunclient/logquery.ui"
@@ -0,0 +1,209 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>LogQuery</class>
+ <widget class="QMainWindow" name="LogQuery">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>800</width>
+    <height>600</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>MainWindow</string>
+  </property>
+  <widget class="QWidget" name="centralwidget">
+   <layout class="QGridLayout" name="gridLayout_2">
+    <item row="0" column="0">
+     <widget class="QGroupBox" name="groupBox">
+      <property name="title">
+       <string>鏌ヨ鏉′欢</string>
+      </property>
+      <layout class="QGridLayout" name="gridLayout">
+       <item row="0" column="0">
+        <layout class="QHBoxLayout" name="horizontalLayout">
+         <item>
+          <widget class="QComboBox" name="comboBox">
+           <item>
+            <property name="text">
+             <string>鏃堕棿</string>
+            </property>
+           </item>
+           <item>
+            <property name="text">
+             <string>鏃ュ織鍐呭</string>
+            </property>
+           </item>
+           <item>
+            <property name="text">
+             <string>鏃ュ織绾у埆</string>
+            </property>
+           </item>
+           <item>
+            <property name="text">
+             <string>璁惧ID</string>
+            </property>
+           </item>
+          </widget>
+         </item>
+         <item>
+          <widget class="QLineEdit" name="lineEdit"/>
+         </item>
+        </layout>
+       </item>
+       <item row="1" column="0">
+        <layout class="QHBoxLayout" name="horizontalLayout_2">
+         <item>
+          <widget class="QLabel" name="label">
+           <property name="text">
+            <string>寮�濮嬶細</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QDateTimeEdit" name="dateTimeEdit_start">
+           <property name="calendarPopup">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>40</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <widget class="QLabel" name="label_2">
+           <property name="text">
+            <string>缁撴潫锛�</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QDateTimeEdit" name="dateTimeEdit_end">
+           <property name="calendarPopup">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer_2">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>40</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+        </layout>
+       </item>
+       <item row="2" column="0">
+        <layout class="QHBoxLayout" name="horizontalLayout_4">
+         <item>
+          <widget class="QPushButton" name="pushButton_search">
+           <property name="text">
+            <string>鏌ヨ</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer_3">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>40</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <widget class="QSpinBox" name="spinBox"/>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </widget>
+    </item>
+    <item row="1" column="0">
+     <widget class="QGroupBox" name="groupBox_2">
+      <property name="title">
+       <string>鏌ヨ缁撴灉</string>
+      </property>
+      <layout class="QHBoxLayout" name="horizontalLayout_3">
+       <item>
+        <widget class="QTableView" name="tableView"/>
+       </item>
+      </layout>
+     </widget>
+    </item>
+    <item row="2" column="0">
+     <layout class="QHBoxLayout" name="horizontalLayout_5">
+      <item>
+       <widget class="QLabel" name="label_currentPage">
+        <property name="text">
+         <string/>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <spacer name="horizontalSpacer_4">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>40</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item>
+       <widget class="QPushButton" name="pushButton_up">
+        <property name="text">
+         <string>涓婁竴椤�</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QPushButton" name="pushButton_down">
+        <property name="text">
+         <string>涓嬩竴椤�</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="menubar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>800</width>
+     <height>23</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QStatusBar" name="statusbar"/>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git "a/Client/\346\234\261\350\210\252/code/kunlunclient/main.cpp" "b/Client/\346\234\261\350\210\252/code/kunlunclient/main.cpp"
new file mode 100644
index 0000000..10f11bd
--- /dev/null
+++ "b/Client/\346\234\261\350\210\252/code/kunlunclient/main.cpp"
@@ -0,0 +1,11 @@
+#include "clientmainwindow.h"
+#include <QApplication>
+
+int main(int argc, char *argv[])
+{
+    QApplication a(argc, argv);
+    ClientMainWindow w;
+    w.show();
+
+    return a.exec();
+}
diff --git "a/Client/\346\234\261\350\210\252/code/\346\234\215\345\212\241\347\253\257/LogSearch.cpp" "b/Client/\346\234\261\350\210\252/code/\346\234\215\345\212\241\347\253\257/LogSearch.cpp"
new file mode 100644
index 0000000..686d211
--- /dev/null
+++ "b/Client/\346\234\261\350\210\252/code/\346\234\215\345\212\241\347\253\257/LogSearch.cpp"
@@ -0,0 +1,91 @@
+#include "stdafx.h"
+#include "LogSearch.h"
+#include <iostream>
+#include "MysqlConn.h"
+using namespace std;
+LogSearch::LogSearch()
+{
+}
+
+
+LogSearch::~LogSearch()
+{
+}
+
+bool LogSearch::searchLogBusiness(SOCKET client, LogQueryReq * req)
+{
+	//// 初始化 SQL 查询语句
+
+	string sql = "SELECT * FROM parsed_logs WHERE";
+
+	if (*(req->startTime) && *(req->endTime)) {
+		sql += " time_stamp BETWEEN '" + string(req->startTime) + "' AND '" + string(req->endTime) + "'";
+	}
+
+	if (*(req->level)) {
+		sql += " level LIKE '%" + string(req->level) + "%'";
+	}
+
+	if (*(req->deviceId)) {
+		sql += " device_id LIKE '%" + string(req->deviceId) + "%'";
+	}
+
+	if ((*req->content)) {
+		sql += " content LIKE '%" + string(req->content) + "%'";
+	}
+
+	// 打印构建的 SQL 语句,方便调试
+	cout << "SQL: " << sql << endl;
+
+	// 设置 MySQL 连接并执行查询
+
+
+		MysqlConn conn;
+		vector<vector<string>> result;
+		bool querySuccess = conn.query(sql, result);
+		if (!querySuccess) {
+			cout << "查询失败" << endl;
+			return false;
+		}
+
+		int len = sizeof(LogQueryRes) + result.size() * sizeof(ParsedLog);  // 动态计算数据长度
+		LogQueryRes* res = (LogQueryRes*)malloc(len);  // 为 LogQueryRes 结构体及其柔性数组分配内存
+
+													   // 初始化结构体
+		res->head.type = LOGSEARCH_RES;
+		res->head.len = len;
+		res->status = (result.empty()) ? 0 : 1; // 如果结果为空,设置状态为 0
+
+												// 将查询结果填充到 parsedLog 数组中
+		for (const auto& row : result) {
+			cout << "行:" << row.size() << endl;
+			for (const auto& item : row) {
+				cout << item << " ";
+
+			}
+		}
+			cout << endl;
+		for (size_t i = 0; i < result.size(); ++i) {
+			const auto& row = result[i];
+			ParsedLog parlog;
+			if (row.size() >= 9) {
+				parlog.id = stoi(row[0]);
+				strncpy(parlog.timeStamp, row[1].c_str(), sizeof(parlog.timeStamp));
+				strncpy(parlog.deviceId, row[2].c_str(), sizeof(parlog.deviceId));
+				strncpy(parlog.level, row[3].c_str(), sizeof(parlog.level));
+				strncpy(parlog.content, row[4].c_str(), sizeof(parlog.content));
+				strncpy(parlog.userId, row[5].c_str(), sizeof(parlog.userId));
+				strncpy(parlog.fileName, row[6].c_str(), sizeof(parlog.fileName));
+				parlog.problemLine = stoi(row[7]);
+				strncpy(parlog.functionName, row[8].c_str(), sizeof(parlog.functionName));
+				res->parsedLog[i] = parlog;  // 填充数据
+			}
+		}
+
+		// 发送响应
+		cout << __FUNCTION__ << send(client, (char*)res, res->head.len, 0) << endl;
+
+		// 释放内存
+		free(res);  // 释放分配的内存
+
+}
diff --git "a/Client/\346\234\261\350\210\252/code/\346\234\215\345\212\241\347\253\257/LogSearch.h" "b/Client/\346\234\261\350\210\252/code/\346\234\215\345\212\241\347\253\257/LogSearch.h"
new file mode 100644
index 0000000..73684e1
--- /dev/null
+++ "b/Client/\346\234\261\350\210\252/code/\346\234\215\345\212\241\347\253\257/LogSearch.h"
@@ -0,0 +1,17 @@
+#pragma once
+#include "common.h"
+#include <WinSock2.h>
+#include "mysql1/include/jdbc/mysql_driver.h"
+#include "mysql1/include/jdbc/mysql_connection.h"
+#include "mysql1/include/jdbc/cppconn/prepared_statement.h"
+#include "mysql1/include/jdbc/cppconn/resultset.h"
+#include "mysql1/include/jdbc/cppconn//exception.h"
+#include <iostream>
+class LogSearch
+{
+public:
+	LogSearch();
+	virtual ~LogSearch();
+	bool searchLogBusiness(SOCKET client, LogQueryReq* req);
+};
+

--
Gitblit v1.8.0