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