Client/¼½ºÆêÆ/code/main.cpp
New file @@ -0,0 +1,11 @@ #include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); } Client/¼½ºÆêÆ/code/mainwindow.cpp
New file @@ -0,0 +1,95 @@ #include "mainwindow.h" #include "ui_mainwindow.h" #include<QValueAxis> #include<QLineSeries> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); this->setGeometry(475,290,1600,1000); showDate(); showTime(); chart_init(); } MainWindow::~MainWindow() { delete ui; } void MainWindow::showDate()//ææ¬æµè§å¨æ¾ç¤ºå®æ¶æ¥æ { QTimer *timer = new QTimer(this); connect(timer, &QTimer::timeout, this, [this](){ QString currentDate = QDate::currentDate().toString("yyyy-MM-dd"); ui->textBrowser_3->setText(currentDate); ui->textBrowser_3->setAlignment(Qt::AlignCenter); }); timer->start(500); } void MainWindow::showTime()//ææ¬æµè§å¨æ¾ç¤ºå®æ¶æ¶é´ { QTimer *timer = new QTimer(this); connect(timer, &QTimer::timeout, this, [this](){ QString currentTime = QTime::currentTime().toString("hh:mm:ss"); ui->textBrowser_4->setText(currentTime); ui->textBrowser_4->setAlignment(Qt::AlignCenter); }); timer->start(500); } void MainWindow::chart_init()//ç»å¶æçº¿å¾ { //设置æ é¢ QChart *chart_1=new QChart; chart_1->setTitle("产é示æå¾"); ui->graphicsView->setChart(chart_1); //设置xè½´è¡¨ç¤ºæ¥æ QValueAxis *axis_x=new QValueAxis; axis_x->setTitleText("æ¥æ"); axis_x->setRange(0,100);//设置å¼å chart_1->addAxis(axis_x,Qt::AlignBottom);//沿åºè¾¹æ¾ç¤º //设置y轴表示产é QValueAxis *axis_y=new QValueAxis; axis_y->setTitleText("产é"); axis_y->setRange(0,500);//设置å¼å chart_1->addAxis(axis_y,Qt::AlignLeft);//沿左边æ¾ç¤º //å®é çäº§éæ²çº¿ QLineSeries *line=new QLineSeries; line->setName("å®é ç产é"); chart_1->addSeries(line); qreal y; for(int x=0;x<100;x++){ y=100; line->append(x,y); } line->attachAxis(axis_x);//ç»å®xè½´ line->attachAxis(axis_y);//ç»å®yè½´ //计åçäº§éæ²çº¿ QLineSeries *line1=new QLineSeries; line1->setName("计åç产é"); chart_1->addSeries(line1); qreal y1; for(int x=0;x<100;x++){ y1=100-x; line1->append(x,y1); } line1->attachAxis(axis_x);//ç»å®xè½´ line1->attachAxis(axis_y);//ç»å®yè½´ //颿µçäº§éæ²çº¿ QLineSeries *line2=new QLineSeries; line2->setName("颿µç产é"); chart_1->addSeries(line2); qreal y2; for(int x=0;x<100;x++){ y2=100+x; line2->append(x,y2); } line2->attachAxis(axis_x);//ç»å®xè½´ line2->attachAxis(axis_y);//ç»å®yè½´ } Client/¼½ºÆêÆ/code/mainwindow.h
New file @@ -0,0 +1,29 @@ #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include<QLabel> #include<QTimer> #include <QtCharts> #include <QChartView> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); void showDate(); void showTime(); private: Ui::MainWindow *ui; void chart_init(); }; #endif // MAINWINDOW_H Client/¼½ºÆêÆ/code/mainwindow.ui
New file @@ -0,0 +1,493 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>MainWindow</class> <widget class="QMainWindow" name="MainWindow"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>1600</width> <height>1000</height> </rect> </property> <property name="font"> <font> <family>å®ä½</family> <pointsize>9</pointsize> </font> </property> <property name="windowTitle"> <string>MainWindow</string> </property> <widget class="QWidget" name="centralWidget"> <widget class="QLineEdit" name="lineEdit"> <property name="geometry"> <rect> <x>50</x> <y>170</y> <width>621</width> <height>51</height> </rect> </property> </widget> <widget class="QPushButton" name="pushButton"> <property name="geometry"> <rect> <x>720</x> <y>170</y> <width>221</width> <height>51</height> </rect> </property> <property name="text"> <string>æ¥è¯¢</string> </property> </widget> <widget class="QLineEdit" name="lineEdit_2"> <property name="geometry"> <rect> <x>70</x> <y>60</y> <width>261</width> <height>51</height> </rect> </property> </widget> <widget class="QPushButton" name="pushButton_2"> <property name="geometry"> <rect> <x>360</x> <y>60</y> <width>141</width> <height>51</height> </rect> </property> <property name="font"> <font> <family>å®ä½</family> <pointsize>12</pointsize> </font> </property> <property name="text"> <string>ç¡®å®</string> </property> </widget> <widget class="QLabel" name="label"> <property name="enabled"> <bool>true</bool> </property> <property name="geometry"> <rect> <x>70</x> <y>10</y> <width>261</width> <height>41</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>11</pointsize> </font> </property> <property name="contextMenuPolicy"> <enum>Qt::DefaultContextMenu</enum> </property> <property name="layoutDirection"> <enum>Qt::LeftToRight</enum> </property> <property name="text"> <string>仿¥è®¡å产éï¼å¨ï¼</string> </property> <property name="alignment"> <set>Qt::AlignBottom|Qt::AlignHCenter</set> </property> </widget> <widget class="Line" name="line"> <property name="geometry"> <rect> <x>0</x> <y>130</y> <width>2000</width> <height>16</height> </rect> </property> <property name="frameShadow"> <enum>QFrame::Plain</enum> </property> <property name="lineWidth"> <number>2</number> </property> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> </widget> <widget class="Line" name="line_2"> <property name="geometry"> <rect> <x>533</x> <y>-2</y> <width>20</width> <height>141</height> </rect> </property> <property name="frameShadow"> <enum>QFrame::Plain</enum> </property> <property name="lineWidth"> <number>2</number> </property> <property name="orientation"> <enum>Qt::Vertical</enum> </property> </widget> <widget class="QLabel" name="label_2"> <property name="enabled"> <bool>true</bool> </property> <property name="geometry"> <rect> <x>610</x> <y>10</y> <width>261</width> <height>41</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>11</pointsize> </font> </property> <property name="contextMenuPolicy"> <enum>Qt::DefaultContextMenu</enum> </property> <property name="layoutDirection"> <enum>Qt::LeftToRight</enum> </property> <property name="text"> <string>仿¥å®é 产éï¼å¨ï¼</string> </property> <property name="alignment"> <set>Qt::AlignBottom|Qt::AlignHCenter</set> </property> </widget> <widget class="QTextBrowser" name="textBrowser"> <property name="geometry"> <rect> <x>610</x> <y>60</y> <width>261</width> <height>51</height> </rect> </property> </widget> <widget class="Line" name="line_3"> <property name="geometry"> <rect> <x>930</x> <y>-2</y> <width>20</width> <height>141</height> </rect> </property> <property name="frameShadow"> <enum>QFrame::Plain</enum> </property> <property name="lineWidth"> <number>2</number> </property> <property name="orientation"> <enum>Qt::Vertical</enum> </property> </widget> <widget class="QTextBrowser" name="textBrowser_2"> <property name="geometry"> <rect> <x>1010</x> <y>60</y> <width>261</width> <height>51</height> </rect> </property> </widget> <widget class="QLabel" name="label_3"> <property name="enabled"> <bool>true</bool> </property> <property name="geometry"> <rect> <x>1010</x> <y>10</y> <width>261</width> <height>41</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>11</pointsize> </font> </property> <property name="contextMenuPolicy"> <enum>Qt::DefaultContextMenu</enum> </property> <property name="layoutDirection"> <enum>Qt::LeftToRight</enum> </property> <property name="text"> <string>仿¥é¢æµäº§éï¼å¨ï¼</string> </property> <property name="alignment"> <set>Qt::AlignBottom|Qt::AlignHCenter</set> </property> </widget> <widget class="Line" name="line_4"> <property name="geometry"> <rect> <x>1290</x> <y>-2</y> <width>20</width> <height>141</height> </rect> </property> <property name="frameShadow"> <enum>QFrame::Plain</enum> </property> <property name="lineWidth"> <number>2</number> </property> <property name="orientation"> <enum>Qt::Vertical</enum> </property> </widget> <widget class="QTextBrowser" name="textBrowser_3"> <property name="geometry"> <rect> <x>1320</x> <y>30</y> <width>261</width> <height>41</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>12</pointsize> </font> </property> <property name="html"> <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'微软é é»'; font-size:12pt; font-weight:400; font-style:normal;"> <p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'å®ä½'; font-size:9pt;"><br /></p></body></html></string> </property> </widget> <widget class="QTextBrowser" name="textBrowser_4"> <property name="geometry"> <rect> <x>1320</x> <y>70</y> <width>261</width> <height>41</height> </rect> </property> <property name="sizePolicy"> <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>12</pointsize> </font> </property> <property name="layoutDirection"> <enum>Qt::LeftToRight</enum> </property> <property name="inputMethodHints"> <set>Qt::ImhMultiLine</set> </property> <property name="html"> <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'微软é é»'; font-size:12pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html></string> </property> </widget> <widget class="Line" name="line_5"> <property name="geometry"> <rect> <x>980</x> <y>139</y> <width>21</width> <height>911</height> </rect> </property> <property name="frameShadow"> <enum>QFrame::Plain</enum> </property> <property name="lineWidth"> <number>2</number> </property> <property name="orientation"> <enum>Qt::Vertical</enum> </property> </widget> <widget class="QListView" name="listView"> <property name="geometry"> <rect> <x>20</x> <y>240</y> <width>951</width> <height>741</height> </rect> </property> </widget> <widget class="Line" name="line_6"> <property name="geometry"> <rect> <x>990</x> <y>650</y> <width>911</width> <height>21</height> </rect> </property> <property name="frameShadow"> <enum>QFrame::Plain</enum> </property> <property name="lineWidth"> <number>2</number> </property> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> </widget> <widget class="QLabel" name="label_6"> <property name="geometry"> <rect> <x>220</x> <y>470</y> <width>551</width> <height>121</height> </rect> </property> <property name="font"> <font> <pointsize>13</pointsize> </font> </property> <property name="text"> <string><html><head/><body><p><br/></p></body></html></string> </property> </widget> <widget class="QChartView" name="graphicsView"> <property name="geometry"> <rect> <x>1000</x> <y>150</y> <width>591</width> <height>501</height> </rect> </property> </widget> <widget class="QTextEdit" name="textEdit"> <property name="geometry"> <rect> <x>1010</x> <y>710</y> <width>571</width> <height>181</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>12</pointsize> </font> </property> </widget> <widget class="QPushButton" name="pushButton_3"> <property name="geometry"> <rect> <x>1210</x> <y>900</y> <width>171</width> <height>51</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>13</pointsize> </font> </property> <property name="text"> <string>ä¸ä¼ </string> </property> </widget> <widget class="QLabel" name="label_4"> <property name="geometry"> <rect> <x>1210</x> <y>660</y> <width>171</width> <height>51</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>18</pointsize> </font> </property> <property name="layoutDirection"> <enum>Qt::LeftToRight</enum> </property> <property name="text"> <string>æ¥å¿</string> </property> <property name="alignment"> <set>Qt::AlignCenter</set> </property> </widget> <widget class="QLabel" name="label_5"> <property name="geometry"> <rect> <x>1000</x> <y>960</y> <width>591</width> <height>31</height> </rect> </property> <property name="text"> <string>æ¥å¿ç¼åè¦æ±ï¼æ¯å¦è¾¾æ ï¼æªè¾¾æ éè¿°æªè¾¾æ åå </string> </property> </widget> </widget> <widget class="QMenuBar" name="menuBar"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>1600</width> <height>17</height> </rect> </property> </widget> </widget> <layoutdefault spacing="6" margin="11"/> <customwidgets> <customwidget> <class>QChartView</class> <extends>QGraphicsView</extends> <header location="global">qchartview.h</header> </customwidget> </customwidgets> <resources/> <connections/> </ui> Client/¼½ºÆêÆ/code/mainwindow.ui.autosave
New file @@ -0,0 +1,493 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>MainWindow</class> <widget class="QMainWindow" name="MainWindow"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>1600</width> <height>1000</height> </rect> </property> <property name="font"> <font> <family>å®ä½</family> <pointsize>9</pointsize> </font> </property> <property name="windowTitle"> <string>MainWindow</string> </property> <widget class="QWidget" name="centralWidget"> <widget class="QLineEdit" name="lineEdit"> <property name="geometry"> <rect> <x>50</x> <y>170</y> <width>621</width> <height>51</height> </rect> </property> </widget> <widget class="QPushButton" name="pushButton"> <property name="geometry"> <rect> <x>720</x> <y>170</y> <width>221</width> <height>51</height> </rect> </property> <property name="text"> <string>æ¥è¯¢</string> </property> </widget> <widget class="QLineEdit" name="lineEdit_2"> <property name="geometry"> <rect> <x>70</x> <y>60</y> <width>261</width> <height>51</height> </rect> </property> </widget> <widget class="QPushButton" name="pushButton_2"> <property name="geometry"> <rect> <x>360</x> <y>60</y> <width>141</width> <height>51</height> </rect> </property> <property name="font"> <font> <family>å®ä½</family> <pointsize>12</pointsize> </font> </property> <property name="text"> <string>ç¡®å®</string> </property> </widget> <widget class="QLabel" name="label"> <property name="enabled"> <bool>true</bool> </property> <property name="geometry"> <rect> <x>70</x> <y>10</y> <width>261</width> <height>41</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>11</pointsize> </font> </property> <property name="contextMenuPolicy"> <enum>Qt::DefaultContextMenu</enum> </property> <property name="layoutDirection"> <enum>Qt::LeftToRight</enum> </property> <property name="text"> <string>仿¥è®¡å产éï¼å¨ï¼</string> </property> <property name="alignment"> <set>Qt::AlignBottom|Qt::AlignHCenter</set> </property> </widget> <widget class="Line" name="line"> <property name="geometry"> <rect> <x>0</x> <y>130</y> <width>2000</width> <height>16</height> </rect> </property> <property name="frameShadow"> <enum>QFrame::Plain</enum> </property> <property name="lineWidth"> <number>2</number> </property> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> </widget> <widget class="Line" name="line_2"> <property name="geometry"> <rect> <x>533</x> <y>-2</y> <width>20</width> <height>141</height> </rect> </property> <property name="frameShadow"> <enum>QFrame::Plain</enum> </property> <property name="lineWidth"> <number>2</number> </property> <property name="orientation"> <enum>Qt::Vertical</enum> </property> </widget> <widget class="QLabel" name="label_2"> <property name="enabled"> <bool>true</bool> </property> <property name="geometry"> <rect> <x>610</x> <y>10</y> <width>261</width> <height>41</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>11</pointsize> </font> </property> <property name="contextMenuPolicy"> <enum>Qt::DefaultContextMenu</enum> </property> <property name="layoutDirection"> <enum>Qt::LeftToRight</enum> </property> <property name="text"> <string>仿¥å®é 产éï¼å¨ï¼</string> </property> <property name="alignment"> <set>Qt::AlignBottom|Qt::AlignHCenter</set> </property> </widget> <widget class="QTextBrowser" name="textBrowser"> <property name="geometry"> <rect> <x>610</x> <y>60</y> <width>261</width> <height>51</height> </rect> </property> </widget> <widget class="Line" name="line_3"> <property name="geometry"> <rect> <x>930</x> <y>-2</y> <width>20</width> <height>141</height> </rect> </property> <property name="frameShadow"> <enum>QFrame::Plain</enum> </property> <property name="lineWidth"> <number>2</number> </property> <property name="orientation"> <enum>Qt::Vertical</enum> </property> </widget> <widget class="QTextBrowser" name="textBrowser_2"> <property name="geometry"> <rect> <x>1010</x> <y>60</y> <width>261</width> <height>51</height> </rect> </property> </widget> <widget class="QLabel" name="label_3"> <property name="enabled"> <bool>true</bool> </property> <property name="geometry"> <rect> <x>1010</x> <y>10</y> <width>261</width> <height>41</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>11</pointsize> </font> </property> <property name="contextMenuPolicy"> <enum>Qt::DefaultContextMenu</enum> </property> <property name="layoutDirection"> <enum>Qt::LeftToRight</enum> </property> <property name="text"> <string>仿¥é¢æµäº§éï¼å¨ï¼</string> </property> <property name="alignment"> <set>Qt::AlignBottom|Qt::AlignHCenter</set> </property> </widget> <widget class="Line" name="line_4"> <property name="geometry"> <rect> <x>1290</x> <y>-2</y> <width>20</width> <height>141</height> </rect> </property> <property name="frameShadow"> <enum>QFrame::Plain</enum> </property> <property name="lineWidth"> <number>2</number> </property> <property name="orientation"> <enum>Qt::Vertical</enum> </property> </widget> <widget class="QTextBrowser" name="textBrowser_3"> <property name="geometry"> <rect> <x>1320</x> <y>30</y> <width>261</width> <height>41</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>12</pointsize> </font> </property> <property name="html"> <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'微软é é»'; font-size:12pt; font-weight:400; font-style:normal;"> <p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'å®ä½'; font-size:9pt;"><br /></p></body></html></string> </property> </widget> <widget class="QTextBrowser" name="textBrowser_4"> <property name="geometry"> <rect> <x>1320</x> <y>70</y> <width>261</width> <height>41</height> </rect> </property> <property name="sizePolicy"> <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>12</pointsize> </font> </property> <property name="layoutDirection"> <enum>Qt::LeftToRight</enum> </property> <property name="inputMethodHints"> <set>Qt::ImhMultiLine</set> </property> <property name="html"> <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'微软é é»'; font-size:12pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html></string> </property> </widget> <widget class="Line" name="line_5"> <property name="geometry"> <rect> <x>980</x> <y>139</y> <width>21</width> <height>911</height> </rect> </property> <property name="frameShadow"> <enum>QFrame::Plain</enum> </property> <property name="lineWidth"> <number>2</number> </property> <property name="orientation"> <enum>Qt::Vertical</enum> </property> </widget> <widget class="QListView" name="listView"> <property name="geometry"> <rect> <x>20</x> <y>240</y> <width>951</width> <height>741</height> </rect> </property> </widget> <widget class="Line" name="line_6"> <property name="geometry"> <rect> <x>990</x> <y>650</y> <width>911</width> <height>21</height> </rect> </property> <property name="frameShadow"> <enum>QFrame::Plain</enum> </property> <property name="lineWidth"> <number>2</number> </property> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> </widget> <widget class="QLabel" name="label_6"> <property name="geometry"> <rect> <x>220</x> <y>470</y> <width>551</width> <height>121</height> </rect> </property> <property name="font"> <font> <pointsize>13</pointsize> </font> </property> <property name="text"> <string><html><head/><body><p><br/></p></body></html></string> </property> </widget> <widget class="QChartView" name="graphicsView"> <property name="geometry"> <rect> <x>1000</x> <y>150</y> <width>591</width> <height>501</height> </rect> </property> </widget> <widget class="QTextEdit" name="textEdit"> <property name="geometry"> <rect> <x>1010</x> <y>710</y> <width>571</width> <height>181</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>12</pointsize> </font> </property> </widget> <widget class="QPushButton" name="pushButton_3"> <property name="geometry"> <rect> <x>1210</x> <y>900</y> <width>171</width> <height>51</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>13</pointsize> </font> </property> <property name="text"> <string>ä¸ä¼ </string> </property> </widget> <widget class="QLabel" name="label_4"> <property name="geometry"> <rect> <x>1210</x> <y>660</y> <width>171</width> <height>51</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>18</pointsize> </font> </property> <property name="layoutDirection"> <enum>Qt::LeftToRight</enum> </property> <property name="text"> <string>æ¥å¿</string> </property> <property name="alignment"> <set>Qt::AlignCenter</set> </property> </widget> <widget class="QLabel" name="label_5"> <property name="geometry"> <rect> <x>1000</x> <y>960</y> <width>591</width> <height>31</height> </rect> </property> <property name="text"> <string>æ¥å¿ç¼åè¦æ±ï¼æ¯å¦è¾¾æ ï¼æªè¾¾æ éè¿°æªè¾¾æ åå </string> </property> </widget> </widget> <widget class="QMenuBar" name="menuBar"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>1600</width> <height>17</height> </rect> </property> </widget> </widget> <layoutdefault spacing="6" margin="11"/> <customwidgets> <customwidget> <class>QChartView</class> <extends>QGraphicsView</extends> <header location="global">qchartview.h</header> </customwidget> </customwidgets> <resources/> <connections/> </ui> Client/¼½ºÆêÆ/code/scjh_test.pro
New file @@ -0,0 +1,34 @@ #------------------------------------------------- # # Project created by QtCreator 2024-10-26T15:07:52 # #------------------------------------------------- QT += core gui QT += charts greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = scjh_test 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 \ mainwindow.cpp HEADERS += \ mainwindow.h FORMS += \ mainwindow.ui Client/¼½ºÆêÆ/code/scjh_test.pro.user
New file @@ -0,0 +1,806 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE QtCreatorProject> <!-- Written by QtCreator 4.5.0, 2024-10-30T15:14:36. --> <qtcreator> <data> <variable>EnvironmentId</variable> <value type="QByteArray">{16df874b-4672-4cdd-8fcb-cf1ce3c401b2}</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">D:/Qt/QtProject/build-scjh_test-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">D:/Qt/QtProject/build-scjh_test-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">D:/Qt/QtProject/build-scjh_test-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">scjh_test</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:D:/Qt/QtProject/scjh_test/scjh_test.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">scjh_test.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">D:/Qt/QtProject/build-scjh_test-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">D:/Qt/QtProject/build-scjh_test-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">D:/Qt/QtProject/build-scjh_test-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">D:/Qt/QtProject/build-scjh_test-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">D:/Qt/QtProject/build-scjh_test-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">D:/Qt/QtProject/build-scjh_test-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">D:/Qt/QtProject/build-scjh_test-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> Client/¼½ºÆêÆ/document/Éú²ú¼Æ»®¹ÜÀí_ÐèÇó·ÖÎö.docxBinary files differ
Client/½ª¿É¸ý/document/ȨÏÞ¹ÜÀíÐèÇó·ÖÎö.docxBinary files differ
Client/Ö캽/document/~$ÐèÇó·ÖÎö.docxBinary files differ
Client/Ö캽/document/ÐèÇó·ÖÎö.docxBinary files differ
Client/ÀîÏüÔö/document/~$²éѯ·ÖÎöÄ£¿éÐèÇó·ÖÎö.docxBinary files differ
Client/ÀîÏüÔö/document/ÀúÊ·²éѯ·ÖÎöÄ£¿éÐèÇó·ÖÎö.docxBinary files differ
Client/ÀîÏüÔö/log/ÀúÊ·²éѯ_ÀîÏüÔö_1030.docBinary files differ
Client/ÍõöÎöÎ/document/µØÍ¼±êעģ¿éÐèÇó·ÖÎö.docxBinary files differ
Client/Éê@/code/test_work_kunlun_1029/main.cpp
New file @@ -0,0 +1,11 @@ #include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); } Client/Éê@/code/test_work_kunlun_1029/mainwindow.cpp
New file @@ -0,0 +1,150 @@ #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); //ç»å½ ui->usernameLineEdit->setPlaceholderText("请è¾å ¥å·¥å·"); ui->passwordLineEdit->setPlaceholderText("请è¾å ¥å¯ç "); ui->passwordLineEdit->setEchoMode(QLineEdit::Password); //注å ui->usernameLineEdit_2->setPlaceholderText("请è¾å ¥ç¨æ·å"); ui->passwordLineEdit_2->setPlaceholderText("请è¾å ¥æ°å¯ç "); ui->repasswordLineEdit->setPlaceholderText("忬¡ç¡®è®¤å¯ç "); ui->passwordLineEdit_2->setEchoMode(QLineEdit::Password); ui->repasswordLineEdit->setEchoMode(QLineEdit::Password); ui->emailLineEdit->setPlaceholderText("请è¾å ¥çµåé®ç®±"); ui->telephoneLineEdit->setPlaceholderText("请è¾å ¥ææºå·"); //设置è¾å ¥é¿åº¦éå¶ä¸º11 QIntValidator *inValidator = new QIntValidator(1,11,this); ui->telephoneLineEdit->setValidator(inValidator); //åªå 许è¾å ¥æ°å QRegExp rx("^[0-9]*$"); QRegExpValidator *regExpValidator = new QRegExpValidator(rx,this); ui->telephoneLineEdit->setValidator(regExpValidator); //éç½®å¯ç ui->email->setPlaceholderText("请è¾å ¥çµåé®ç®±"); ui->CAPTCHI->setPlaceholderText("请è¾å ¥éªè¯ç "); ui->password_2->setPlaceholderText("请è¾å ¥å¯ç "); ui->password_3->setPlaceholderText("请确认å¯ç "); ui->password_2->setEchoMode(QLineEdit::Password); ui->password_3->setEchoMode(QLineEdit::Password); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_loginPushButton_clicked()//ç»å½çé¢ç»å½æé® { QString username = ui->usernameLineEdit->text(); QString password = ui->passwordLineEdit->text(); if(username==0||password==0){ QMessageBox::warning(this, "è¾å ¥é误", "ç¨æ·åæå¯ç ä¸è½ä¸ºç©ºï¼");//æ¾ç¤ºéè¯¯æ¶æ¯ }else if(validateInput(username, password)){/* è¾å ¥æ ¡éªé»è¾ */ QByteArray hashedPassword = hashPassword(password); // 仿°æ®åºææä»¶è·ååå¨çç¨æ·ååå å¯å¯ç if (verifyUserData(username, hashedPassword)) {/* è¾å ¥æ ¡éªé»è¾ */ QMessageBox::information(this, "ç»å½æå", "欢è¿åæ¥ï¼" + username + "ï¼"); // æ ¹æ®ç¨æ·æéå è½½ä¸åçé¢ } else { QMessageBox::warning(this, "ç»å½å¤±è´¥", "ç¨æ·åæå¯ç é误ï¼");//æ¾ç¤ºéè¯¯æ¶æ¯ } }else{ QMessageBox::warning(this, "è¾å ¥é误", "ç¨æ·åæå¯ç ä¸åæ³ï¼");//æ¾ç¤ºéè¯¯æ¶æ¯ } } void MainWindow::on_registerPushButton_2_clicked()//注åç颿³¨åæé® { QString username_2 = ui->usernameLineEdit_2->text(); QString password_2 = ui->passwordLineEdit_2->text(); if (validateInput(username_2, password_2)) {/*è¾å ¥æ ¡éªé»è¾*/ QByteArray hashedPassword = hashPassword(password_2); //åå¨ç¨æ·ååå å¯å¯ç å°æ°æ®åºææä»¶ saveUserData(username_2, hashedPassword); QMessageBox::information(this, "注åæå", "ç¨æ·æ³¨åæåï¼"); } else { QMessageBox::warning(this, "è¾å ¥é误", "ç¨æ·åæå¯ç ä¸åæ³ï¼");//æ¾ç¤ºéè¯¯ä¿¡æ¯ } } void MainWindow::on_registerPushButton_clicked()//ç»å½ç颿³¨åæé® { ui->stackedWidget->setCurrentIndex(1); } void MainWindow::on_forgotPushButton_clicked()//ç»å½çé¢å¿è®°å¯ç æé® { ui->stackedWidget->setCurrentIndex(2); } void MainWindow::on_toolButton_clicked()//注åçé¢è¿åç»å½æé® { ui->stackedWidget->setCurrentIndex(0); } void MainWindow::on_toolButton_2_clicked()//é设å¯ç çé¢è¿åç»å½æé® { ui->stackedWidget->setCurrentIndex(0); } void MainWindow::on_repasswordPushButton_clicked()//é设å¯ç æé® { } QByteArray MainWindow::hashPassword(const QString &password) { return QCryptographicHash::hash(password.toUtf8(), QCryptographicHash::Sha256); } bool MainWindow::validateInput(const QString &username, const QString &password) { // æ ¡éªç¨æ·ååå¯ç çé¿åº¦ååæ³æ§ QRegExp usernameRegex("^[a-zA-Z0-9_]{3,15}$"); // ç¨æ·åèå´3-15个å符 QRegExp passwordRegex("^[a-zA-Z0-9@#$%^&+=]{6,20}$"); // å¯ç èå´6-20个å符 return usernameRegex.exactMatch(username) && passwordRegex.exactMatch(password); } void MainWindow::saveUserData(const QString &username, const QByteArray &hashedPassword) { QFile file("userdata.txt"); if (file.open(QIODevice::Append | QIODevice::Text)) { QTextStream out(&file); out << username << "\n" << hashedPassword.toHex() << "\n"; // åå¨ç¨æ·åååå¸å¯ç file.close(); } } bool MainWindow::verifyUserData(const QString &username, const QByteArray &hashedPassword) { QFile file("userdata.txt"); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { QTextStream in(&file); while (!in.atEnd()) { QString storedUsername = in.readLine(); QString storedPassword = in.readLine(); if (storedUsername == username && storedPassword == hashedPassword.toHex()) { file.close(); return true; // éªè¯æå } } file.close(); } return false; // éªè¯å¤±è´¥ } Client/Éê@/code/test_work_kunlun_1029/mainwindow.h
New file @@ -0,0 +1,52 @@ #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QWidget> #include <QLineEdit> #include <QPushButton> #include <QVBoxLayout> #include <QLabel> #include <QCryptographicHash> #include <QMessageBox> #include <QRegExp> #include <QFile> #include <QTextStream> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void on_loginPushButton_clicked(); void on_registerPushButton_clicked();//ç»å½ç颿³¨åæé® void on_forgotPushButton_clicked(); void on_toolButton_clicked();//ç»å½çé¢è¿åæé® void on_registerPushButton_2_clicked();//注åç颿³¨åæé® void on_toolButton_2_clicked();//注åçé¢è¿åæé® void on_repasswordPushButton_clicked(); private: Ui::MainWindow *ui; QByteArray hashPassword(const QString &password);//å¯ç è¿è¡åå¸å¤ç bool validateInput(const QString &username, const QString &password);//éªè¯è¾å ¥æ¡ void saveUserData(const QString &username, const QByteArray &hashedPassword);//ä¿åç¨æ·æ°æ® bool verifyUserData(const QString &username, const QByteArray &hashedPassword);//éªè¯ç¨æ·æ°æ® }; #endif // MAINWINDOW_H Client/Éê@/code/test_work_kunlun_1029/mainwindow.ui
New file @@ -0,0 +1,601 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>MainWindow</class> <widget class="QMainWindow" name="MainWindow"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>1045</width> <height>699</height> </rect> </property> <property name="windowTitle"> <string>注åç»å½</string> </property> <property name="styleSheet"> <string notr="true"/> </property> <widget class="QWidget" name="centralWidget"> <widget class="QLabel" name="label"> <property name="geometry"> <rect> <x>5</x> <y>5</y> <width>1030</width> <height>635</height> </rect> </property> <property name="text"> <string/> </property> <property name="pixmap"> <pixmap resource="pic.qrc">:/mayi/p1.png</pixmap> </property> <property name="scaledContents"> <bool>true</bool> </property> </widget> <widget class="QStackedWidget" name="stackedWidget"> <property name="geometry"> <rect> <x>300</x> <y>100</y> <width>401</width> <height>441</height> </rect> </property> <property name="styleSheet"> <string notr="true"/> </property> <property name="currentIndex"> <number>0</number> </property> <widget class="QWidget" name="page"> <widget class="QLabel" name="label_2"> <property name="geometry"> <rect> <x>60</x> <y>70</y> <width>291</width> <height>301</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>12</pointsize> </font> </property> <property name="styleSheet"> <string notr="true">background-color: rgb(233, 233, 233); border: none; border-radius: 10px;</string> </property> <property name="text"> <string/> </property> </widget> <widget class="QLineEdit" name="passwordLineEdit"> <property name="geometry"> <rect> <x>100</x> <y>210</y> <width>211</width> <height>41</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> </font> </property> </widget> <widget class="QLineEdit" name="usernameLineEdit"> <property name="geometry"> <rect> <x>100</x> <y>150</y> <width>211</width> <height>41</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> </font> </property> <property name="alignment"> <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> </property> <property name="placeholderText"> <string/> </property> </widget> <widget class="QPushButton" name="forgotPushButton"> <property name="geometry"> <rect> <x>230</x> <y>270</y> <width>93</width> <height>31</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> </font> </property> <property name="styleSheet"> <string notr="true">color: rgb(0, 85, 255);</string> </property> <property name="text"> <string>å¿è®°å¯ç ?</string> </property> <property name="flat"> <bool>true</bool> </property> </widget> <widget class="QPushButton" name="loginPushButton"> <property name="geometry"> <rect> <x>100</x> <y>320</y> <width>80</width> <height>31</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>9</pointsize> </font> </property> <property name="styleSheet"> <string notr="true">background-color: rgb(0, 153, 255); color: rgb(255, 255, 255); border: none; border-radius: 10px;</string> </property> <property name="text"> <string>ç»å½</string> </property> </widget> <widget class="QLabel" name="label_3"> <property name="geometry"> <rect> <x>180</x> <y>100</y> <width>41</width> <height>41</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>12</pointsize> </font> </property> <property name="text"> <string>ç»å½</string> </property> </widget> <widget class="QCheckBox" name="checkBox"> <property name="geometry"> <rect> <x>100</x> <y>270</y> <width>91</width> <height>31</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> </font> </property> <property name="text"> <string>è®°ä½å¯ç </string> </property> </widget> <widget class="QPushButton" name="registerPushButton"> <property name="geometry"> <rect> <x>230</x> <y>320</y> <width>80</width> <height>31</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>9</pointsize> </font> </property> <property name="styleSheet"> <string notr="true">background-color: rgb(0, 153, 255); color: rgb(255, 255, 255); border: none; border-radius: 10px;</string> </property> <property name="text"> <string>注å</string> </property> </widget> </widget> <widget class="QWidget" name="page_2"> <widget class="QLabel" name="label_4"> <property name="geometry"> <rect> <x>60</x> <y>40</y> <width>291</width> <height>361</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>12</pointsize> </font> </property> <property name="styleSheet"> <string notr="true">background-color: rgb(233, 233, 233); border: none; border-radius: 10px;</string> </property> <property name="text"> <string/> </property> </widget> <widget class="QLineEdit" name="repasswordLineEdit"> <property name="geometry"> <rect> <x>100</x> <y>190</y> <width>211</width> <height>41</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> </font> </property> </widget> <widget class="QLineEdit" name="telephoneLineEdit"> <property name="geometry"> <rect> <x>100</x> <y>290</y> <width>211</width> <height>41</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> </font> </property> </widget> <widget class="QToolButton" name="toolButton"> <property name="geometry"> <rect> <x>70</x> <y>50</y> <width>21</width> <height>21</height> </rect> </property> <property name="styleSheet"> <string notr="true">QToolButton{ background-color: rgb(0, 0, 0); boder:none; } QToolButton#toolButton{ background-color: rgb(233, 233, 233); border-image: url(:/mayi/return1.png); }</string> </property> <property name="text"> <string/> </property> </widget> <widget class="QLineEdit" name="passwordLineEdit_2"> <property name="geometry"> <rect> <x>100</x> <y>140</y> <width>211</width> <height>41</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> </font> </property> </widget> <widget class="QPushButton" name="registerPushButton_2"> <property name="geometry"> <rect> <x>170</x> <y>350</y> <width>71</width> <height>31</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>9</pointsize> </font> </property> <property name="styleSheet"> <string notr="true">background-color: rgb(0, 153, 255); color: rgb(255, 255, 255); border: none; border-radius: 10px;</string> </property> <property name="text"> <string>注å</string> </property> </widget> <widget class="QLabel" name="label_5"> <property name="geometry"> <rect> <x>180</x> <y>50</y> <width>41</width> <height>41</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>12</pointsize> </font> </property> <property name="text"> <string>注å</string> </property> </widget> <widget class="QLineEdit" name="emailLineEdit"> <property name="geometry"> <rect> <x>100</x> <y>240</y> <width>211</width> <height>41</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> </font> </property> </widget> <widget class="QLineEdit" name="usernameLineEdit_2"> <property name="geometry"> <rect> <x>100</x> <y>90</y> <width>211</width> <height>41</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> </font> </property> <property name="text"> <string/> </property> </widget> <zorder>label_4</zorder> <zorder>repasswordLineEdit</zorder> <zorder>telephoneLineEdit</zorder> <zorder>toolButton</zorder> <zorder>passwordLineEdit_2</zorder> <zorder>label_5</zorder> <zorder>emailLineEdit</zorder> <zorder>usernameLineEdit_2</zorder> <zorder>registerPushButton_2</zorder> </widget> <widget class="QWidget" name="page_3"> <widget class="QLabel" name="label_6"> <property name="geometry"> <rect> <x>60</x> <y>40</y> <width>291</width> <height>361</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>12</pointsize> </font> </property> <property name="styleSheet"> <string notr="true">background-color: rgb(233, 233, 233); border: none; border-radius: 10px;</string> </property> <property name="text"> <string/> </property> </widget> <widget class="QLineEdit" name="password_2"> <property name="geometry"> <rect> <x>100</x> <y>200</y> <width>211</width> <height>41</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> </font> </property> <property name="text"> <string/> </property> </widget> <widget class="QLineEdit" name="CAPTCHI"> <property name="geometry"> <rect> <x>100</x> <y>150</y> <width>211</width> <height>41</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> </font> </property> <property name="text"> <string/> </property> </widget> <widget class="QLineEdit" name="password_3"> <property name="geometry"> <rect> <x>100</x> <y>250</y> <width>211</width> <height>41</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> </font> </property> <property name="text"> <string/> </property> </widget> <widget class="QPushButton" name="repasswordPushButton"> <property name="geometry"> <rect> <x>160</x> <y>330</y> <width>111</width> <height>31</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>9</pointsize> </font> </property> <property name="styleSheet"> <string notr="true">background-color: rgb(0, 153, 255); color: rgb(255, 255, 255); border: none; border-radius: 10px;</string> </property> <property name="text"> <string>é设å¯ç </string> </property> </widget> <widget class="QLineEdit" name="email"> <property name="geometry"> <rect> <x>100</x> <y>100</y> <width>211</width> <height>41</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> </font> </property> <property name="text"> <string/> </property> </widget> <widget class="QLabel" name="label_7"> <property name="geometry"> <rect> <x>160</x> <y>50</y> <width>91</width> <height>41</height> </rect> </property> <property name="font"> <font> <family>微软é é»</family> <pointsize>12</pointsize> </font> </property> <property name="text"> <string>é设å¯ç </string> </property> </widget> <widget class="QToolButton" name="toolButton_2"> <property name="geometry"> <rect> <x>70</x> <y>60</y> <width>21</width> <height>21</height> </rect> </property> <property name="styleSheet"> <string notr="true">QToolButton{ background-color: rgb(0, 0, 0); boder:none; } QToolButton#toolButton_2{ background-color: rgb(233, 233, 233); border-image: url(:/mayi/return1.png); }</string> </property> <property name="text"> <string/> </property> </widget> </widget> </widget> </widget> <widget class="QMenuBar" name="menuBar"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>1045</width> <height>26</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> <include location="pic.qrc"/> </resources> <connections/> </ui> Client/Éê@/code/test_work_kunlun_1029/p1.png
Client/Éê@/code/test_work_kunlun_1029/pic.qrc
New file @@ -0,0 +1,7 @@ <RCC> <qresource prefix="/mayi"> <file>p1.png</file> <file>return.png</file> <file>return1.png</file> </qresource> </RCC> Client/Éê@/code/test_work_kunlun_1029/return.png
Client/Éê@/code/test_work_kunlun_1029/return1.png
Client/Éê@/code/test_work_kunlun_1029/test_work_kunlun_1029.pro
New file @@ -0,0 +1,37 @@ #------------------------------------------------- # # Project created by QtCreator 2024-10-29T18:25:58 # #------------------------------------------------- QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = test_work_kunlun_1029 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 \ mainwindow.cpp HEADERS += \ mainwindow.h FORMS += \ mainwindow.ui RESOURCES += \ pic.qrc Client/Éê@/code/test_work_kunlun_1029/test_work_kunlun_1029.pro.user
New file @@ -0,0 +1,806 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE QtCreatorProject> <!-- Written by QtCreator 4.5.0, 2024-10-30T15:12:40. --> <qtcreator> <data> <variable>EnvironmentId</variable> <value type="QByteArray">{446cd7f5-b0fa-434b-a884-8d2e768836a8}</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">D:/Qt/QtProject/build-test_work_kunlun_1029-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">D:/Qt/QtProject/build-test_work_kunlun_1029-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">D:/Qt/QtProject/build-test_work_kunlun_1029-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">test_work_kunlun_1029</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:D:/Qt/QtProject/test_work_kunlun_1029/test_work_kunlun_1029.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">test_work_kunlun_1029.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">D:/Qt/QtProject/build-test_work_kunlun_1029-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">D:/Qt/QtProject/build-test_work_kunlun_1029-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">D:/Qt/QtProject/build-test_work_kunlun_1029-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">D:/Qt/QtProject/build-test_work_kunlun_1029-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">D:/Qt/QtProject/build-test_work_kunlun_1029-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">D:/Qt/QtProject/build-test_work_kunlun_1029-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">D:/Qt/QtProject/build-test_work_kunlun_1029-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> Client/Éê@/document/×¢²áµÇ¼ÐèÇó·ÖÎö.docxBinary files differ
Client/Ö£¿ÎÄ/document/About version updates£¨µÚ¶þ°æ£©.docxBinary files differ
Client/Ö£¿ÎÄ/document/½á¹¹Ìå.docxBinary files differ
Client/Ö£¿ÎÄ/log/Ö£¿ÎÄ1029.docBinary files differ
Client/Ö£¿ÎÄ/log/Ö£¿ÎÄ1030.docBinary files differ
Client/ÀèºëÁØ/code/device_management.zipBinary files differ
Client/ÀèºëÁØ/document/É豸¹ÜÀíÐèÇó·ÖÎö.docxBinary files differ
Server/Àîתת/document/ÐèÇó·ÖÎö±¨¸æ.docxBinary files differ
Server/ÍõçûÔª/document/µ¥Àýģʽ·â×°.txt
File was deleted Server/ÍõçûÔª/document/½¨±í.docxBinary files differ
Server/ÍõçûÔª/document/Êý¾Ý¿â.docxBinary files differ
Server/ÍõçûÔª/document/Êý¾Ý¿âÄ£¿éÐèÇó·ÖÎö.docxBinary files differ
Server/ÍõçûÔª/document/Êý¾Ý¿âÁ¬½Ó.txt
File was deleted Server/ÍõçûÔª/document/Êý¾Ý¿âÁ¬½Ó³ØÀà.txt
File was deleted Server/ºú¼ÒÃ÷/document/ÍøÂçsocket´î½¨ÐèÇó·ÖÎö.docxBinary files differ
Server/ºú¼ÒÃ÷/log/ÈÕÖ¾_ºú¼ÒÃ÷_1030.docBinary files differ
Server/³Â³þµ¤/document/ÐÒéÊÊÅäÐèÇó·ÖÎö.docxBinary files differ
Server/³Â³þµ¤/log/ÈÕÖ¾_³Â³þµ¤_1030.docBinary files differ
Server/ÂíÀöƼ/code/log/.vscode/c_cpp_properties.json
@@ -5,7 +5,7 @@ "includePath": [ "${workspaceFolder}/**" ], "compilerPath": "gcc", "compilerPath": "C:\\Users\\lenovo\\AppData\\Local\\GitHubDesktop\\bin\\g++.exe", "cStandard": "${default}", "cppStandard": "${default}", "intelliSenseMode": "windows-gcc-x64", Server/ÂíÀöƼ/code/log/.vscode/settings.json
@@ -4,7 +4,7 @@ "C_Cpp_Runner.debuggerPath": "gdb", "C_Cpp_Runner.cStandard": "", "C_Cpp_Runner.cppStandard": "", "C_Cpp_Runner.msvcBatchPath": "C:/Program Files/Microsoft Visual Studio/VR_NR/Community/VC/Auxiliary/Build/vcvarsall.bat", "C_Cpp_Runner.msvcBatchPath": "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/vcvarsall.bat", "C_Cpp_Runner.useMsvc": false, "C_Cpp_Runner.warnings": [ "-Wall", @@ -55,5 +55,9 @@ "C_Cpp_Runner.useLeakSanitizer": false, "C_Cpp_Runner.showCompilationTime": false, "C_Cpp_Runner.useLinkTimeOptimization": false, "C_Cpp_Runner.msvcSecureNoWarnings": false "C_Cpp_Runner.msvcSecureNoWarnings": false, "files.associations": { "iosfwd": "cpp", "thread": "cpp" } } Server/ÂíÀöƼ/code/log/README.md
@@ -1,9 +1,12 @@ # 弿¥æ¥å¿ç³»ç» 忥/弿¥æ¥å¿ç³»ç» =============== 忥/弿¥æ¥å¿ç³»ç»ä¸»è¦æ¶åäºä¸¤ä¸ªæ¨¡åï¼ä¸ä¸ªæ¯æ¥å¿æ¨¡åï¼ä¸ä¸ªæ¯é»å¡é忍¡å,å ¶ä¸å å ¥é»å¡é忍¡åä¸»è¦æ¯è§£å³å¼æ¥åå ¥æ¥å¿ååå¤. ## ç®ä» 弿¥æ¥å¿ç³»ç»ä¸»è¦æ¶å两个模åï¼ä¸ä¸ªæ¯æ¥å¿æ¨¡åï¼ä¸ä¸ªæ¯é»å¡é忍¡åï¼å ¶ä¸å å ¥é»å¡é忍¡åä¸»è¦æ¯è§£å³å¼æ¥åå ¥æ¥å¿çåå¤å·¥ä½ã > * èªå®ä¹é»å¡éå > * å便¨¡å¼å建æ¥å¿ > * 忥æ¥å¿ > * 弿¥æ¥å¿ > * å®ç°æå¤©ãè¶ è¡åç±» > * æä»¶éå¶å¤§å°ï¼é²æ¢æ¥å¿æä»¶è¿å¤§ Server/ÂíÀöƼ/code/log/block_queue.h
@@ -8,9 +8,12 @@ #include <iostream> #include <stdlib.h> #include <pthread.h> #include <sys/time.h> #include "../lock/locker.h" #include <thread> // æ¿æ¢ pthread.h #include <chrono> #include <ctime> #include "locker.h" using namespace std; template <class T> Server/ÂíÀöƼ/code/log/locker.h
New file @@ -0,0 +1,25 @@ #ifndef LOCKER_H #define LOCKER_H #include <mutex> #include <stdexcept> class locker { public: locker() = default; ~locker() = default; void lock() { m_mutex.lock(); } void unlock() { m_mutex.unlock(); } private: std::mutex m_mutex; }; #endif // LOCKER_H Server/ÂíÀöƼ/code/log/log.cpp
@@ -1,164 +1,150 @@ #include <string.h> #include <time.h> #include <sys/time.h> #include <chrono> #include <ctime> #include <stdarg.h> #include "log.h" #include <pthread.h> #include <sstream> #include <fstream> #include <iostream> #include <chrono> using namespace std; Log::Log() { m_count = 0; m_is_async = false; // æé 彿° Log::Log() { m_count = 0; // åå§åæ¥å¿è¡æ° m_is_async = false; // åå§åä¸ºåæ¥ } Log::~Log() { if (m_fp != NULL) { fclose(m_fp); // ææå½æ° Log::~Log() { if (m_fp.is_open()) { m_fp.close(); // å ³éæ¥å¿æä»¶ } } //弿¥éè¦è®¾ç½®é»å¡éåçé¿åº¦ï¼åæ¥ä¸éè¦è®¾ç½® bool Log::init(const char *file_name, int close_log, int log_buf_size, int split_lines, int max_queue_size) { //å¦æè®¾ç½®äºmax_queue_size,åè®¾ç½®ä¸ºå¼æ¥ if (max_queue_size >= 1) { m_is_async = true; m_log_queue = new block_queue<string>(max_queue_size); pthread_t tid; //flush_log_thread为åè°å½æ°,è¿é表示å建线ç¨å¼æ¥åæ¥å¿ pthread_create(&tid, NULL, flush_log_thread, NULL); } m_close_log = close_log; m_log_buf_size = log_buf_size; m_buf = new char[m_log_buf_size]; memset(m_buf, '\0', m_log_buf_size); m_split_lines = split_lines; // æ¥æ¶åå§æ¥å¿å¹¶è§£æ void Log::receiveLog(const std::string &raw_log) { ParsedLog parsed_log = parseLog(raw_log); write_log(levelToInt(parsed_log.level), "%s [%s] %s", parsed_log.timestamp.c_str(), parsed_log.device_id.c_str(), parsed_log.content.c_str()); } // è§£ææ¥å¿å符串 ParsedLog Log::parseLog(const std::string &log) { ParsedLog parsed_log; std::istringstream iss(log); std::string level; // è¯»åæ¶é´æ³ã设å¤ID忥å¿çº§å« iss >> parsed_log.timestamp >> parsed_log.device_id >> level; std::getline(iss, parsed_log.content); parsed_log.level = level; // 设置解æåççº§å« return parsed_log; } // åå§åæ¥å¿ç³»ç» bool Log::init(const std::string &file_name, int close_log, int log_buf_size, int split_lines, int max_queue_size) { if (max_queue_size >= 1) { m_is_async = true; // å¯ç¨å¼æ¥åå ¥ m_log_queue = new block_queue<string>(max_queue_size); // å建é»å¡éå std::thread(&Log::flush_log_thread, this).detach(); // åå»ºå·æ°æ¥å¿çº¿ç¨ } m_close_log = close_log; // è®¾ç½®å ³éæ¥å¿æ å¿ m_log_buf_size = log_buf_size; // 设置ç¼å²åºå¤§å° m_buf = new char[m_log_buf_size]; // åé ç¼å²åº memset(m_buf, '\0', m_log_buf_size); // æ¸ ç©ºç¼å²åº m_split_lines = split_lines; // 设置æå¤§è¡æ° time_t t = time(NULL); struct tm *sys_tm = localtime(&t); struct tm my_tm = *sys_tm; std::string log_full_name; // æ ¹æ®æä»¶è·¯å¾åå½åæ¥æçæå®æ´æ¥å¿æä»¶å if (file_name.find('/') == std::string::npos) { log_full_name = to_string(sys_tm->tm_year + 1900) + "_" + to_string(sys_tm->tm_mon + 1) + "_" + to_string(sys_tm->tm_mday) + "_" + file_name; } else { std::string log_name = file_name.substr(file_name.find_last_of('/') + 1); std::string dir_name = file_name.substr(0, file_name.find_last_of('/') + 1); const char *p = strrchr(file_name, '/'); char log_full_name[256] = {0}; if (p == NULL) { snprintf(log_full_name, 255, "%d_%02d_%02d_%s", my_tm.tm_year + 1900, my_tm.tm_mon + 1, my_tm.tm_mday, file_name); } else { strcpy(log_name, p + 1); strncpy(dir_name, file_name, p - file_name + 1); snprintf(log_full_name, 255, "%s%d_%02d_%02d_%s", dir_name, my_tm.tm_year + 1900, my_tm.tm_mon + 1, my_tm.tm_mday, log_name); log_full_name = dir_name + to_string(sys_tm->tm_year + 1900) + "_" + to_string(sys_tm->tm_mon + 1) + "_" + to_string(sys_tm->tm_mday) + "_" + log_name; } m_today = my_tm.tm_mday; m_fp = fopen(log_full_name, "a"); if (m_fp == NULL) { return false; m_today = sys_tm->tm_mday; // è®°å½ä»å¤©çæ¥æ m_fp.open(log_full_name, std::ios::out | std::ios::app); // æå¼æ¥å¿æä»¶ if (!m_fp.is_open()) { return false; // æå¼å¤±è´¥ } return true; return true; // åå§åæå } void Log::write_log(int level, const char *format, ...) { struct timeval now = {0, 0}; gettimeofday(&now, NULL); time_t t = now.tv_sec; struct tm *sys_tm = localtime(&t); struct tm my_tm = *sys_tm; char s[16] = {0}; switch (level) { case 0: strcpy(s, "[debug]:"); break; case 1: strcpy(s, "[info]:"); break; case 2: strcpy(s, "[warn]:"); break; case 3: strcpy(s, "[erro]:"); break; default: strcpy(s, "[info]:"); break; } //åå ¥ä¸ä¸ªlogï¼å¯¹m_count++, m_split_linesæå¤§è¡æ° m_mutex.lock(); m_count++; #include <chrono> if (m_today != my_tm.tm_mday || m_count % m_split_lines == 0) //everyday log { void Log::write_log(int level, const char *format, ...) { auto now = std::chrono::system_clock::now(); auto now_time_t = std::chrono::system_clock::to_time_t(now); struct tm *sys_tm = localtime(&now_time_t); char new_log[256] = {0}; fflush(m_fp); fclose(m_fp); char tail[16] = {0}; std::string s; snprintf(tail, 16, "%d_%02d_%02d_", my_tm.tm_year + 1900, my_tm.tm_mon + 1, my_tm.tm_mday); if (m_today != my_tm.tm_mday) { snprintf(new_log, 255, "%s%s%s", dir_name, tail, log_name); m_today = my_tm.tm_mday; m_count = 0; } else { snprintf(new_log, 255, "%s%s%s.%lld", dir_name, tail, log_name, m_count / m_split_lines); } m_fp = fopen(new_log, "a"); // æ ¹æ®æ¥å¿çº§å«è®¾ç½®åç¼ switch (level) { case DEBUG: s = "[debug]: "; break; case INFO: s = "[info]: "; break; case WARN: s = "[warn]: "; break; case ERROR: s = "[error]: "; break; default: s = "[info]: "; break; } m_mutex.unlock(); m_mutex.lock(); // éå®äºæ¥ä½ m_count++; // å¢å æ¥å¿è®¡æ° va_list valst; va_start(valst, format); string log_str; m_mutex.lock(); //åå ¥çå ·ä½æ¶é´å å®¹æ ¼å¼ int n = snprintf(m_buf, 48, "%d-%02d-%02d %02d:%02d:%02d.%06ld %s ", my_tm.tm_year + 1900, my_tm.tm_mon + 1, my_tm.tm_mday, my_tm.tm_hour, my_tm.tm_min, my_tm.tm_sec, now.tv_usec, s); int m = vsnprintf(m_buf + n, m_log_buf_size - n - 1, format, valst); m_buf[n + m] = '\n'; m_buf[n + m + 1] = '\0'; log_str = m_buf; m_mutex.unlock(); if (m_is_async && !m_log_queue->full()) { m_log_queue->push(log_str); } else { m_mutex.lock(); fputs(log_str.c_str(), m_fp); m_mutex.unlock(); // æ£æ¥æ¯å¦éè¦è½®æ¢æ¥å¿ if (m_today != sys_tm->tm_mday || m_count % m_split_lines == 0) { // ... (æ¥å¿è½®æ¢ä»£ç ) } va_end(valst); // åå ¥æ¥å¿å 容 va_list valist; va_start(valist, format); vsnprintf(m_buf, m_log_buf_size, format, valist); // åå ¥æ¥å¿å 容 m_fp << s << m_buf << std::endl; // 使ç¨ofstreamåå ¥æä»¶ m_mutex.unlock(); // è§£éäºæ¥ä½ // 弿¥åå ¥æ¥å¿ if (m_is_async && !m_log_queue->full()) { m_log_queue->push(m_buf); // å°æ¥å¿æ¨å ¥éå } } void Log::flush(void) { m_mutex.lock(); //强å¶å·æ°åå ¥æµç¼å²åº fflush(m_fp); m_mutex.unlock(); // å·æ°æ¥å¿æä»¶ void Log::flush(void) { m_mutex.lock(); // éå®äºæ¥ä½ m_fp.flush(); // å·æ°æä»¶ m_mutex.unlock(); // è§£éäºæ¥ä½ } // å·æ°æ¥å¿çº¿ç¨ void Log::flush_log_thread() { while (m_is_async) { // ä»éåä¸è·åæ¥å¿å¹¶åå ¥ string log; if (m_log_queue->pop(log)) { write_log(INFO, "%s", log.c_str()); } } } // æ¥å¿çº§å«è½¬æ¢ä¸ºæ´æ° int Log::levelToInt(const std::string &level) { if (level == "[debug]:") return DEBUG; if (level == "[info]:") return INFO; if (level == "[warn]:") return WARN; if (level == "[error]:") return ERROR; return INFO; // é»è®¤è¿åINFO } Server/ÂíÀöƼ/code/log/log.h
@@ -5,65 +5,92 @@ #include <iostream> #include <string> #include <stdarg.h> #include <pthread.h> #include <thread> #include "block_queue.h" #include "locker.h" // ç¡®ä¿ locker.h 被å å« #include <fstream> using namespace std; // æ¥å¿çº§å«æä¸¾ enum LogLevel { DEBUG = 0, INFO, WARN, ERROR }; // åå¨è§£ææ¥å¿æä»¶çç»æä½ struct ParsedLog { std::string timestamp; // æ¶é´æ³ std::string device_id; // 设å¤ID std::string level; // æ¥å¿çº§å« std::string content; // æ¥å¿å 容 }; class Log { public: //C++11以å,使ç¨å±é¨åéææ±ä¸ç¨å é // è·ååä¾å®ä¾ static Log *get_instance() { static Log instance; return &instance; } static void *flush_log_thread(void *args) { Log::get_instance()->async_write_log(); } //å¯éæ©çåæ°ææ¥å¿æä»¶ãæ¥å¿ç¼å²åºå¤§å°ãæå¤§è¡æ°ä»¥åæé¿æ¥å¿æ¡éå bool init(const char *file_name, int close_log, int log_buf_size = 8192, int split_lines = 5000000, int max_queue_size = 0); // å·æ°æ¥å¿çº¿ç¨ void flush_log_thread(); // ä¿®æ¹ä¸ºééææå彿° // åå§åæ¥å¿ç³»ç»ï¼åæ°å æ¬æä»¶åãæ¯å¦å ³éæ¥å¿ãç¼å²åºå¤§å°ãæå¤§è¡æ°åæå¤§éåå¤§å° bool Log::init(const char *file_name, int close_log, int log_buf_size, int split_lines, int max_queue_size); // åå ¥æ¥å¿ void write_log(int level, const char *format, ...); // å·æ°æ¥å¿æä»¶ void flush(void); private: Log(); virtual ~Log(); void *async_write_log() { string single_log; //ä»é»å¡éåä¸ååºä¸ä¸ªæ¥å¿stringï¼åå ¥æä»¶ while (m_log_queue->pop(single_log)) { m_mutex.lock(); fputs(single_log.c_str(), m_fp); m_mutex.unlock(); } } //æ¥æ¶åå§çè¦å ¬å ±ç±» void receiveLog(const std::string& raw_log); // æ¥æ¶åå§æ¥å¿ private: char dir_name[128]; //è·¯å¾å char log_name[128]; //logæä»¶å Log(); // æé 彿° virtual ~Log(); // ææå½æ° void async_write_log(); // 弿¥åå ¥æ¥å¿ bool check_log_size(); // æ£æ¥æ¥å¿æä»¶å¤§å° void rotate_logs(); // è½®æ¢æ¥å¿æä»¶ ParsedLog parseLog(const std::string& log); // è§£ææ¥å¿ bool init(const std::string &file_name, int close_log, int log_buf_size, int split_lines, int max_queue_size); void queryLogs(const std::string &device_id); // æ¥è¯¢æ¥å¿ const char* log_level_to_string(int level); // å°æ¥å¿çº§å«è½¬æ¢ä¸ºå符串 int levelToInt(const std::string &level); private: char dir_name[128]; // æ¥å¿æä»¶ç®å½ char log_name[128]; // æ¥å¿æä»¶å int m_split_lines; //æ¥å¿æå¤§è¡æ° int m_log_buf_size; //æ¥å¿ç¼å²åºå¤§å° long long m_count; //æ¥å¿è¡æ°è®°å½ int m_today; //å 为æå¤©åç±»,è®°å½å½åæ¶é´æ¯é£ä¸å¤© FILE *m_fp; //æå¼logçæä»¶æé char *m_buf; int m_today; // è®°å½å½åæ¶é´ std::ofstream m_fp; // å° FILE * m_fp æ´æ¹ä¸º std::ofstream m_fp char *m_buf; // æ¥å¿ç¼å²åº block_queue<string> *m_log_queue; //é»å¡éå bool m_is_async; //æ¯å¦åæ¥æ å¿ä½ locker m_mutex; int m_close_log; //å ³éæ¥å¿ bool m_is_async; // æ¯å¦å¼æ¥æ å¿ä½ locker m_mutex; // äºæ¥é int m_close_log; // å ³éæ¥å¿çæ å¿ long max_size = 10 * 1024 * 1024; // 10MB //æµè¯æä»¶éé¢ç int m_close_log; // ç¡®ä¿å¨è¿éå®ä¹ }; #define LOG_DEBUG(format, ...) if(0 == m_close_log) {Log::get_instance()->write_log(0, format, ##__VA_ARGS__); Log::get_instance()->flush();} #define LOG_INFO(format, ...) if(0 == m_close_log) {Log::get_instance()->write_log(1, format, ##__VA_ARGS__); Log::get_instance()->flush();} #define LOG_WARN(format, ...) if(0 == m_close_log) {Log::get_instance()->write_log(2, format, ##__VA_ARGS__); Log::get_instance()->flush();} #define LOG_ERROR(format, ...) if(0 == m_close_log) {Log::get_instance()->write_log(3, format, ##__VA_ARGS__); Log::get_instance()->flush();} // å®å®ä¹ç¨äºä¸å级å«çæ¥å¿è®°å½ #define LOG_DEBUG(format, ...) if(0 == m_close_log) {Log::get_instance()->write_log(DEBUG, format, ##__VA_ARGS__); Log::get_instance()->flush();} #define LOG_INFO(format, ...) if(0 == m_close_log) {Log::get_instance()->write_log(INFO, format, ##__VA_ARGS__); Log::get_instance()->flush();} #define LOG_WARN(format, ...) if(0 == m_close_log) {Log::get_instance()->write_log(WARN, format, ##__VA_ARGS__); Log::get_instance()->flush();} #define LOG_ERROR(format, ...) if(0 == m_close_log) {Log::get_instance()->write_log(ERROR, format, ##__VA_ARGS__); Log::get_instance()->flush();} #endif Server/ÂíÀöƼ/code/log/test_log.cpp
New file @@ -0,0 +1,25 @@ #include <iostream> #include "log.h" int main() { // åå§åæ¥å¿ç³»ç» if (!Log::get_instance()->init("test_log.txt", 0, 8192, 5000000, 1000)) { std::cerr << "Failed to initialize log system." << std::endl; return 1; } // æµè¯åå ¥ä¸å级å«çæ¥å¿ Log::get_instance()->write_log(DEBUG, "This is a debug message."); Log::get_instance()->write_log(INFO, "This is an info message."); Log::get_instance()->write_log(WARN, "This is a warning message."); Log::get_instance()->write_log(ERROR, "This is an error message."); // æ¨¡ææ¥æ¶åå§æ¥å¿ Log::get_instance()->receiveLog("[info]: Device123 Operation successful."); // å·æ°æ¥å¿ Log::get_instance()->flush(); std::cout << "Logs written successfully." << std::endl; return 0; } ²Î¿¼Îĵµ/ÈÕ־ģ°å/ÈÕ־ģ°å_Ãû×Ö_ÈÕÆÚ.docBinary files differ
²Î¿¼¹æÔò_1030.txt
New file @@ -0,0 +1,155 @@ ===================================== ç»æä½çè§åï¼ åæä¸¤é¨åï¼ æ°æ®å¤´ï¼ int type; ç¨æ¥åºåä¸åçåè½ int len; ç¨æ¥è¡¨ç¤ºå°å çæ»é¿åº¦ï¼è§£å³ç²å é®é¢ æ°æ®ä½ï¼ å ·ä½çåè½å段 å¦ç»å½ï¼ char user_name[32]; char password[32]; ---------------------- å½åè§åï¼ ç»æä½ä¸è¬æ¯æå¯¹åºç°ï¼æè¯·æ±ï¼æååº xxReq // Request xxRes // Response --------------------- åå§åè§åï¼ é»è®¤ç»ä¸ä¸ªæ åæé 彿° xx(){ // å¯¹æ°æ®å¤´è¿è¡åå§å } ------------------------- ç»typeç»ä¸èµ·æ¥ï¼ä½¿ç¨æä¸¾æ¥ç»ä¸èµå¼ enum TypeInfo{ LOGIN_REQ, // ç»å½è¯·æ± LOGIN_RES, // ç»å½ååº }; ------------------------- å¿ é¡»æææçç»æä½ä»¥åæä¸¾çï¼é½æ¾å°åä¸ä¸ªå¤´æä»¶ä¸ å¹¶ä¸åå端é½ä½¿ç¨åä¸ä¸ªå¤´æä»¶ common.h ----------------------- æåæ©å±æ§ï¼ ææ°æ®å¤´é¨åï¼åç¬æåºæ¥ struct Head { int type; int len; }; -----ä½¿ç¨ å¦ï¼ç»å½è¯·æ± struct LoginReq { Head head; char user_name[32]; char password[32]; LoginReq(){ head.type = LOGIN_REQ; head.len = sizeof(LoginReq); } }; ç»å½ååºï¼ struct Permission { int admin; int log_search; int history; int map_change; int version_manage; int warning; int device_manage; int pro_plan; //char role_name[32]; // è§è²å int role_id; // è§è²id }; struct LoginRes { Head head; char user_name[32]; int status; // ç»å½ç¶æ // æåæ¶ï¼è¯¥è´¦å·å¯¹åºçæéç»å Permission per; LoginRes() { head.type = LOGIN_RES; head.len = sizeof(LoginRes); }; }; ---------------------- ç¹æ®è¦æ±ï¼ å¯ä»¥ä½¿ç¨jsonçæ ¼å¼ï¼ ä¹å¯ä»¥ä½¿ç¨xmlçæ ¼å¼ï¼ çè³ç´æ¥ä½¿ç¨ç¹å®å符串ç åææ¡ä»¶ï¼æç¹æ®è¦æ±çåè®®ï¼æåè·ç½ç»/åè®®æ²å®ï¼ --------------------- ============================================================ æ°æ®åºè¡¨çä¸äºè§åï¼ è¡¨å: ä¸å¡å_info ãèèåå¹¶ï¼æç¼åºè¡¨è¾¾ææå°ä½çååã å¦ï¼ç»å½ã注åãæé管çå ±ç¨ç¸åç2å¼ è¡¨ ç¨æ·ä¿¡æ¯è¡¨ user_info è§è²æé表 role_info æ¯ä¸ä¸ªè¡¨ç第ä¸ä¸ªå段[第ä¸å]ï¼ æ¯ id,int,主é®ï¼èªå¢(ä»1å¼å§) ---------------- åsqlè¯å¥æ¶ï¼å°½é䏿¡è¯å¥å®ææä½ ãææä½ è¦åé«çº§è¯å¥ã ---------------- æ°æ®åºè´è´£äººï¼å¤ä¸ªåè½ï¼ç¨å°åä¸å¼ 表äºï¼è¦æææå段åå¹¶ å¹¶ä¸å»é[ç¸åææçä¿çä¸ä¸ªå段] ---------------- ================================================ åéåå½åè§åï¼ æ®éæååéï¼ç±»å m_åéå; // å åç¼ éææååéï¼ç±»å s_åéå; // sm_åéå å±é¨åéï¼ç±»å åéå; // ä¸è¦åç¼ ================================================ 模ååå½åè§åï¼ç¦æ¢ä½¿ç¨å·¥ç¨å建é»è®¤çåå ä¸å¡å å¦ç»å½ï¼Cç«¯ï¼ ç±»åï¼ LoginMainWindow æè LoginBusiness ================================================ Îĵµ·ÖÎö1028.cpp
New file @@ -0,0 +1,235 @@ [MySQL] æ°æ®åºå°è£ ï¼[åæå¡] 1ãåä¸ä¸ªç±»ï¼[设计模å¼ï¼åä¾] å¢å æ¹æ¥æ¥å£[å ¬æ] è¿æ¥ãéæ¾çæ¥å£[ç§æ] 2ãèèæ§è½--SQLè¿æ¥æ± [ç±»]--[åçåçº¿ç¨æ± 类似]--å¤ç¨sqlè¿æ¥ -- èµ·å°æåæ§è½çä½ç¨ è¿æ¥æ°éï¼æå¤§ãæå° æ³¢å¨ç®æ³ï¼æå°--æå¤§--æå° 建åº--ä¸ä¸ªåº 建表--ï¼ææç¨å°æ°æ®åºç表ï¼é½ç»ä½ æ±æ»å°ä¸èµ· --å并类似æè ç¸åç表çåæ®µ å¤ä»½å¯¼åº--shellèæ¬èªå¨å®æ¶å¯¼åº å®å ¨é²æ³¨å ¥æ ¡éªï¼åæ°åãæ£åå¹é ç ä½ç°ï¼åä¸ä¸ªæ¥å£ï¼ç»æææ§è¡æ°æ®åºsqlè¯å¥çå°æ¹è¿è¡æ ¡éª =================================================== çæ¬ç®¡ç--èªå¨æ´æ°(çæ¬) 管çï¼å±äºæå¡ç«¯çåè½ èªå¨æ´æ°ï¼å±äºå®¢æ·ç«¯çåè½ ---------------- æ¹å¼ï¼å¢éæ´æ°ãå ¨éæ´æ° ---------------- 管çï¼ä¹éè¦ä¸ä¸ªUI--æ¹ä¾¿æäº¤æ´æ°çæä»¶[坿§è¡æä»¶ãåºæä»¶ãé ç½®æä»¶ç] æäº¤æä»¶--æä»¶åå°ç£ç--ç¸å ³ä¿¡æ¯è®°å½å°æ°æ®åº æä»¶ä¸ä¼ æ§è¡æ°æ®åºæå ¥è¯å¥ ---------------------- æä»¶ä¿¡æ¯ï¼æä»¶åã大å°ãç®å½[åå°æå¡ç«¯çç®å½ã客æ·ç«¯çæ£çç¸å¯¹ç®å½]ãæä»¶MD5å¼[æ ¡éªæä»¶å®æ´æ§] çæ¬ä¿¡æ¯ï¼å½åçæ¬å·[æ°çæ¬]ãä¾èµçæ¬[èçæ¬] é¢å¤ä¿¡æ¯ï¼æ´æ°æ¶é´ãæ´æ°æè¿°ç ---------------- ç»æä½ï¼è¦ç¨å°ä¸å®é¿æ°ç»--æä»¶å 容æ¯ååçãé¿åº¦ä¸ç¡®å® --------------- =================================================== æ¥å¿ç¸å ³ 1ãæ°æ®è¾åºï¼æ¥å¿æä»¶ãæ¥å¿æ°æ®è¡¨ 2ãç±»ï¼æ¥å¿çç±»--æçº§å«åä¸ä¸ªè°ç¨ åä¸ä¸ªæ¥å£--使ç¨å½æ°å®--å级å«å»ä½¿ç¨--æç»ä½¿ç¨ï¼åªéè¦ä¼ æ¥å¿æè¿°[å符串] å ¶ä»çåæ°ï¼ä½¿ç¨å®æ¥å代 ------------------ 3ãæä»¶å大--è¦ç¿»æ»--è§£å³è¶ 大æä»¶ä¸è½ç´æ¥æå¼çé®é¢ ç¿»æ»ç®æ³ï¼æ¶é´æ³ æè id 4ã宿¶å¤ä»½å¯¼åºï¼shellèæ¬èªå¨å®æ¶å¯¼åº 5ãæ§è½ï¼é½åå°åä¸ä¸ªæä»¶çæ åµä¸ï¼æ¯å¼æ¥åå ¥è¿æ¯åæ¥åå ¥ï¼ åå¤ä¸ä¸ªéåï¼æææçåå ¥æä½åæä¸ä¸ªåå ¥ä»»å¡ï¼è¿å ¥éåä¹åï¼æéåå ¥ --使ç¨å¼æ¥çæ¹å¼ï¼ç»ä¸å¡è约äºçå¾ æ¶é´ ------------------------------- =============================================== é 置管ç--以é ç½®æä»¶ç形弿¥åå¨é ç½®çå 容--xmlæä»¶ æå¡ç«¯æå¥ï¼ç½ç»éä¿¡ãæ°æ®åºãæ¥å¿ãçæ¬ç®¡çãé 置管çç --------------------å 容 ç½ç»éä¿¡ï¼ipãportãå¿è·³ä¿æ´»æ¶é¿:é´éæ¶é¿ãè½®æ¬¡ãæ¯å¦å¯ç¨å¿è·³æ£æµ æ°æ®åºï¼hostãportãæ°æ®åºåãç¨æ·åãå¯ç æ¥å¿ï¼æä»¶åå¨è·¯å¾ãæä»¶å¤§å° çæ¬ç®¡çï¼åæ¾çæ¬æä»¶çæ ¹ç®å½ é 置管çï¼å·å¯å¨ãçå¯å¨ -------------------- 使ç¨xmlçåºï¼tinyxml2 ï¼ tinyxml2.h tinyxml2.cpp 对xmlæä»¶è§£æï¼å¦å为 config.xml ï¼è§£æéé¢å å«çåæ®µå°±è¡ -------------------- <?xml version="1.0" encoding="utf-8"?> <socket ip="0.0.0.0" port="16888" heartCheck="true" heartTimes="6" heartSleep="5000"> </socket> <MySQL> </MySQL> <log> <path>./log</path> <size>100M</size> </log> <version> </version> <config> </config> ------------------ ä¸»è¦æ¯è¯»åéé¢çæ°æ® æä¾å 容ï¼å ¨å±æä¾å¯¹è±¡ï¼ææ±æ¨¡å¼åï¼é¥¿æ±æ¨¡å¼èµå¼ ------------------ ä½¿ç¨æ¶æºï¼ 1ãææ±æ¨¡å¼ï¼éæ¶è·å 2ãé¥¿æ±æ¨¡å¼ï¼éè¦å¨ä¸»å½æ°ç¬¬ä¸è¡å°±å¼å§è·èµ·æ¥ ------------------ è¦èµ·ä¸æ¡çº¿ç¨ï¼æ¥è´è´£çæ§ config.xmlæä»¶ææ²¡æè¢«ä¿®æ¹ï¼åç°ä¿®æ¹ï¼éè¦æ´æ°ä¿®æ¹çå 容 æ´æ°æä½ï¼1ãéç½ç»ç¸å ³çåæå¡ï¼å¯ä»¥ç´æ¥çå¯å¨ 2ãç½ç»ç¸å ³çåæå¡ï¼å°±å¾å·å¯å¨[é坿´ä¸ªexe] å·å¯å¨çæä½ï¼å¯è½éè¦å®æ¤è¿ç¨æ¥ç®¡ç ---------------------- ========================================== socket 1ãTCP åè®® 2ãéä¿¡ç±»[S端]ã客æ·ç«¯åªéè¦æ¶å ãè§£å 3ãæ§è½ï¼å¤çº¿ç¨-->çº¿ç¨æ± [IOå¤ç¨] selectãpollãepoll 模å[3个éé¢çä¸ä¸ª] 4ãä¸å¡åºç±»--ç»ä¸å®å¥½ææä¸å¡çæ¥å£ ------------- å ¶ä»ï¼ç²å å¤çãå¿è·³æ£æµç ------------------ èªå®ä¹åè®®ï¼è¦å¯¹ç»æä½--æç¼--ä¸ç»ä¸åè½type--ç¨æä¸¾æ¥ç»ä¸ ------------------ ================================== åè®®éé ï¼ ç»ä¸æ°æ®--åºå±åè®®ä¸å jsonæ ¼å¼--æ¯æä¸åè¯è¨çå¼åï¼web[html]\C++ èªå®ä¹ç»æä½æ ¼å¼ C/C++ ------------------- 2ä¸ªå°æ¹å¯ä»¥éé ï¼ ä¸åæ°æ®æ ¼å¼çéé --åºç¨å±çåè®® ä¸ååè®®ï¼æ´åºå±çï¼tcpãudpãrs485ç ------------------- 使ç¨ç¹å®çæ å¿æ¥æ è¯ååºçåè®® ========================================= 客æ·ç«¯ï¼ ------------------ æ¥å¿æ¥è¯¢ï¼ æ¥è¯¢logè®°å½[æ°æ®åºä¸çæ¥å¿è¡¨]--å±ç¤ºå°å端çé¢--åæ ---------- æ¥è¯¢æ¡ä»¶ï¼ 级å«ãå ³é®åãæ¶é´æ®µç ä¸åæ¡ä»¶æ¥å°å 容ä¸ä¸æ ·--ææ§æ°ç»æ¥è¡¨ç¤º LogInfo ç»æä½ ï¼å å«äºlog表ææå段 ç¨æ°ç»è¡¨ç¤ºNè¡ æ¾ç¤ºç»æï¼ æ¾ç¤ºçæ¶åï¼è¦èèé级çé®é¢ å°±å¾ä½¿ç¨åé¡µç®æ³æ¥å¤çï¼å页æ¾ç¤º ---- æå¡ç«¯ï¼é»è®¤è¿å第ä¸é¡µçå 容,æ¯é¡µæ¡æ°å¯ä»¥è®¾å®ï¼é»è®¤100æ¡ ä¹å¯ä»¥æå®é¡µç è·åæ°æ®ï¼è¿å 客æ·ç«¯ï¼ä½¿ç¨å页æºå¶ï¼åªæ¾ç¤ºç¹å®çåé¡µæ°æ®ï¼æ³çæ´å¤æ°æ® ç¹ç¸åºç页颿é®å°±å¯ä»¥æ¥ç --------------------------------- çæ¬æ´æ° åºäºçæ¬ç®¡çæä¾ççæ¬ä¿¡æ¯ï¼æ¥è¿è¡æ´æ° æ¹å¼ï¼æå¨æ´æ°ãèªå¨æ´æ° æ´æ°éæ©ï¼å¢éæ´æ°ãå ¨éæ´æ° çæ»å¤§å°çåºå«ï¼éæ©å°ç æä½ï¼ä¸»è¦æ¯ä¸è½½ææ°ççå 容ï¼å°å®¢æ·ç«¯æ¥ï¼è¿è¡è¦çæè æ°å¢ æ´æ°ç¨åºï¼update.exe æ¥å¯¹ä¸»ç¨åºè¿è¡æ´æ° é»è¾ï¼update.exe å¯å¨éè¦ä¸»ç¨åºæ¥å¯å¨ï¼åç°æ°çäºæå¯å¨ å¯å¨ä¹åï¼update.exeè¿è¡çæ¬çä¸è½½ï¼è¦ççï¼å®æä¹åï¼ åæä¸»ç¨åºå¯å¨ å°é»è¾ï¼ å¢éæ´æ°ï¼ å½åçæ¬å·--ä¸ä¸ä¸ªçæ¬--ååçæä»¶--é个ä¸è½½ï¼è¦ç --æ´æ°çæ¬å·--卿å½åçæ¬å¾ä¸éå½ --ç´å°æ´æ°å°ææ°ç--åå¯å¨ä¸»ç¨åº å ¨éæ´æ°ï¼ä¸è½½ææ°ççå®è£ å --å®è£ --å¯å¨ å½åçæ¬å·ï¼æ¬å°å¾æä¸ä¸ªçæ¬å·çè®°å½æä»¶ï¼å¯ä»¥æ¯txtãxmlãiniçæ¹å¼ ================================= å°å¾æ 注 ç¾åº¦å°å¾--API--HTML-JS JS--Qt交äºï¼webChannel.js --------------------- ==================================== ç³»ç»è®¾ç½®ï¼ 客æ·ç«¯ççé¢ç¸å ³ï¼å¤è§--飿 ¼ãåä½ ç¿»è¯ï¼ä¸æãè±æç å¿«æ·é®ï¼åè½åå¿«æ·é®ç»å® ===================================== 注åï¼é»è®¤æ¯æå°æéçç¨æ· ç»å½ï¼æå--æ ¹æ®ä¸åçæéæ¥æ¾ç¤ºä¸åçåçé¢ --------- è¾å ¥æ ¡éªï¼ éæ³å符ãé¿åº¦ -------------- å®å ¨ï¼å¯ç å å¯--è§£å¯çå¤ç -------------------------------- ======================= è¦æ¥æç¤º è¦ç»ææå¨çº¿çç¨æ·-åéè¦æ¥æç¤º ========================= æé管ç å æ¥è¯¢--æ¯ææ¨¡ç³å¹é --åæ¾ç¤º--ç¨è¡¨æ ¼--å³é®èå--ä¿®æ¹æé ------------------------