#include <QUrl>
#include <QCoreApplication>
#include <QTextCodec>
+#include <QComboBox>
+#include <QAbstractItemView>
+#include <QFontMetrics>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
- setWindowTitle("雷鸟产测工具");
+ setWindowTitle("雷鸟产测工具 V1.1");
// 确保控制台输出使用UTF-8编码
QTextCodec *utf8Codec = QTextCodec::codecForName("UTF-8");
currentAudioStep = AUDIO_PLAYING_1KHZ;
currentModemVersion = "";
currentSimStatus = -1;
+ // 初始化日志文件相关变量
+ testLogFile = nullptr;
+ testLogStream = nullptr;
+ testLogFilePath = "";
// 初始化按键测试状态
for (int i = 0; i < 4; i++) {
MainWindow::~MainWindow()
{
+ // 关闭日志文件
+ closeTestLogFile();
+
delete ui;
if (serial->isOpen()) {
serial->close();
ui->portNameBox->clear();
// 获取所有可用串口
const auto infos = QSerialPortInfo::availablePorts();
+ int maxWidth = 0;
+ QFontMetrics fm(ui->portNameBox->font());
for (const QSerialPortInfo &info : infos) {
- ui->portNameBox->addItem(info.portName() + " (" + info.description() + ")");
+ QString itemText = info.portName() + " (" + info.description() + ")";
+ ui->portNameBox->addItem(itemText);
+ // 计算文本宽度,找出最长的项
+ #if QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)
+ int textWidth = fm.horizontalAdvance(itemText);
+ #else
+ int textWidth = fm.width(itemText);
+ #endif
+ if (textWidth > maxWidth) {
+ maxWidth = textWidth;
+ }
+ }
+ // 设置下拉列表的最小宽度,确保所有选项都能完整显示
+ if (maxWidth > 0) {
+ ui->portNameBox->view()->setMinimumWidth(maxWidth + 20); // 加20像素作为边距
}
}
// 显示到IMEI文本框
ui->IMEIlineEdit->setText(imeiInfo);
qDebug() << "最终提取的IMEI:" << imeiInfo;
+ // 尝试重命名日志文件(如果ICCID也已获取)
+ renameLogFileWithDeviceInfo();
} else {
if (imeiInfo.isEmpty()) {
qDebug() << "IMEI信息为空,数据:" << data.trimmed();
// 显示到ICCID文本框
ui->ICCIDlineEdit->setText(iccidInfo);
qDebug() << "提取的ICCID:" << iccidInfo;
+ // 尝试重命名日志文件(如果IMEI也已获取)
+ renameLogFileWithDeviceInfo();
} else {
qDebug() << "ICCID格式不正确,不显示到界面,ICCID:" << iccidInfo;
ui->statusbar->showMessage("ICCID格式不正确: " + iccidInfo, 3000);
qDebug() << "解析到signal值:" << signalValue;
// 将signal值显示到界面
- ui->recvTextEdit->append(QString("Network Stat Signal值: %1").arg(signalValue));
+ appendToLogFile(QString("Network Stat Signal值: %1\n").arg(signalValue));
ui->statusbar->showMessage(QString("检测到Network Stat Signal值: %1").arg(signalValue), 2000);
// 如果正在进行4G测试,处理signal值
// 显示到接收区(如果是fac:开头的行)
if (line.startsWith("fac:")) {
- ui->recvTextEdit->insertPlainText(processLine);
- ui->recvTextEdit->moveCursor(QTextCursor::End);
+ appendToLogFile(processLine);
}
// 处理所有数据提取(不管是否以fac:开头)(大小写不敏感)
// 检测wstp_print格式的BTMAC和CyweeChipInfo数据(不需要fac:开头)
if (line.contains("^^^^ BTMAC=") && line.contains("^^^^ CyweeChipInfo=")) {
// 显示到接收区
- ui->recvTextEdit->insertPlainText(line);
- ui->recvTextEdit->moveCursor(QTextCursor::End);
+ appendToLogFile(line);
parseWstpPrintData(line);
}
// 显示保存成功消息
ui->statusbar->showMessage(QString("测试记录已保存: %1").arg(csvFileName), 3000);
+ // 关闭测试日志文件(测试完成)
+ if (testLogFile && testLogStream) {
+ QDateTime endTime = QDateTime::currentDateTime();
+ *testLogStream << QString("=== 测试结束时间: %1 ===\n").arg(endTime.toString("yyyy-MM-dd hh:mm:ss"));
+ *testLogStream << QString("测试记录已保存: %1\n").arg(csvFileName);
+ testLogStream->flush();
+ }
+ closeTestLogFile();
+
// 返回文件名供外部使用
return csvFileName;
}
qDebug() << "解析到signal值:" << signalValue;
// 将signal值显示到界面
- ui->recvTextEdit->append(QString("Signal值: %1").arg(signalValue));
+ appendToLogFile(QString("Signal值: %1\n").arg(signalValue));
ui->statusbar->showMessage(QString("检测到Signal值: %1").arg(signalValue), 2000);
} else {
qDebug() << "未找到signal值";
testTimeoutTimer->stop();
isProductionTestRunning = false;
currentTestStep = TEST_IDLE;
+
+ // 关闭测试日志文件
+ if (testLogFile && testLogStream) {
+ *testLogStream << QString("=== 测试被用户停止: %1 ===\n").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));
+ testLogStream->flush();
+ }
+ closeTestLogFile();
+
ui->statusbar->showMessage("产测已停止", 2000);
qDebug() << "产测被用户停止";
hasReceivedSignalSim = false;
hasReceivedPppInfo = false;
+ // 创建测试日志文件
+ createTestLogFile();
+
// 清空所有UI内容
ui->recvTextEdit->clear(); // 清空串口接收文本框
ui->sendTextEdit->clear(); // 清空发送文本框
qDebug() << "CAT1信号测试解析到signal值:" << signalValue << ",接收次数:" << cat1SignalReceivedCount << "/5";
// 将CAT1 signal值显示到界面
- ui->recvTextEdit->append(QString("CAT1 Signal值: %1 (%2/5)").arg(signalValue).arg(cat1SignalReceivedCount));
+ appendToLogFile(QString("CAT1 Signal值: %1 (%2/5)\n").arg(signalValue).arg(cat1SignalReceivedCount));
// 统计信号值(用于计算平均值)
if (signalValue == 99) {
QString rsrqGrade = getRsrqGrade(currentRsrq);
QString rsrqOutput = QString("RSRQ: %1 (%2 dB:%3)").arg(rsrqRaw).arg(currentRsrq).arg(rsrqGrade);
qDebug() << rsrqOutput;
- ui->recvTextEdit->insertPlainText(rsrqOutput + "\n");
- ui->recvTextEdit->moveCursor(QTextCursor::End);
+ appendToLogFile(rsrqOutput + "\n");
return; // 每行单独处理
}
QString rsrpGrade = getRsrpGrade(currentRsrp);
QString rsrpOutput = QString("RSRP: %1 (%2 dBm:%3)").arg(rsrpRaw).arg(currentRsrp).arg(rsrpGrade);
qDebug() << rsrpOutput;
- ui->recvTextEdit->insertPlainText(rsrpOutput + "\n");
- ui->recvTextEdit->moveCursor(QTextCursor::End);
+ appendToLogFile(rsrpOutput + "\n");
return; // 每行单独处理
}
QString overallAssessment = getOverallSignalAssessment(currentRsrp, currentRsrq);
QString overallOutput = QString("总体评级:%1").arg(overallAssessment);
qDebug() << overallOutput;
- ui->recvTextEdit->insertPlainText(overallOutput + "\n");
- ui->recvTextEdit->moveCursor(QTextCursor::End);
+ appendToLogFile(overallOutput + "\n");
// 检查信号质量是否良好以上
bool rsrpGood = data.contains("覆盖极好") || data.contains("覆盖良好") ||
{
serial->write("AT^FACTORY=3\r\n");
}
+
+// 创建测试日志文件
+void MainWindow::createTestLogFile()
+{
+ // 如果日志文件已打开,先关闭
+ closeTestLogFile();
+
+ // 获取当前时间
+ QDateTime now = QDateTime::currentDateTime();
+
+ // 获取IMEI和ICCID(可能还没有,使用"未知"作为占位符)
+ QString imei = ui->IMEIlineEdit->text().trimmed();
+ QString iccid = ui->ICCIDlineEdit->text().trimmed();
+
+ if (imei.isEmpty()) {
+ imei = "未知";
+ }
+ if (iccid.isEmpty()) {
+ iccid = "未知";
+ }
+
+ // 创建日志目录(在CSV记录目录下的logs子目录)
+ QString appPath = QCoreApplication::applicationDirPath();
+ QString logsDir = appPath + "/产测记录/logs";
+ QDir dir;
+ if (!dir.exists(logsDir)) {
+ dir.mkpath(logsDir);
+ }
+
+ // 生成文件名:yyyymmdd_hhmmss_imei_iccid.log
+ QString fileName = QString("%1_%2_%3_%4.log")
+ .arg(now.toString("yyyyMMdd"))
+ .arg(now.toString("hhmmss"))
+ .arg(imei)
+ .arg(iccid);
+
+ testLogFilePath = logsDir + "/" + fileName;
+
+ // 创建并打开日志文件
+ testLogFile = new QFile(testLogFilePath);
+ if (!testLogFile->open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) {
+ qDebug() << "无法创建日志文件:" << testLogFilePath << "错误:" << testLogFile->errorString();
+ delete testLogFile;
+ testLogFile = nullptr;
+ return;
+ }
+
+ testLogStream = new QTextStream(testLogFile);
+ testLogStream->setCodec("UTF-8");
+
+ // 写入日志文件头
+ *testLogStream << QString("=== 测试开始时间: %1 ===\n").arg(now.toString("yyyy-MM-dd hh:mm:ss"));
+ *testLogStream << QString("IMEI: %1\n").arg(imei);
+ *testLogStream << QString("ICCID: %1\n").arg(iccid);
+ *testLogStream << "========================================\n";
+ testLogStream->flush();
+
+ qDebug() << "测试日志文件已创建:" << testLogFilePath;
+}
+
+// 追加内容到日志文件(同时显示到recvTextEdit)
+void MainWindow::appendToLogFile(const QString& text)
+{
+ // 显示到recvTextEdit
+ ui->recvTextEdit->insertPlainText(text);
+ ui->recvTextEdit->moveCursor(QTextCursor::End);
+
+ // 如果日志文件已打开,写入日志文件
+ if (testLogFile && testLogStream && testLogFile->isOpen()) {
+ *testLogStream << text;
+ testLogStream->flush();
+ }
+}
+
+// 关闭测试日志文件
+void MainWindow::closeTestLogFile()
+{
+ if (testLogStream) {
+ delete testLogStream;
+ testLogStream = nullptr;
+ }
+
+ if (testLogFile) {
+ if (testLogFile->isOpen()) {
+ testLogFile->close();
+ }
+ delete testLogFile;
+ testLogFile = nullptr;
+ }
+
+ testLogFilePath = "";
+}
+
+// 使用设备信息重命名日志文件
+void MainWindow::renameLogFileWithDeviceInfo()
+{
+ // 如果日志文件未打开或路径为空,不处理
+ if (!testLogFile || testLogFilePath.isEmpty()) {
+ return;
+ }
+
+ // 获取IMEI和ICCID
+ QString imei = ui->IMEIlineEdit->text().trimmed();
+ QString iccid = ui->ICCIDlineEdit->text().trimmed();
+
+ // 如果IMEI和ICCID都还是"未知"或为空,不重命名
+ if (imei.isEmpty() || imei == "未知" || iccid.isEmpty() || iccid == "未知") {
+ return;
+ }
+
+ // 从当前文件名中提取时间部分
+ QFileInfo fileInfo(testLogFilePath);
+ QString baseName = fileInfo.baseName();
+ QStringList parts = baseName.split("_");
+
+ if (parts.size() >= 2) {
+ QString datePart = parts[0]; // yyyymmdd
+ QString timePart = parts[1]; // hhmmss
+
+ // 生成新文件名
+ QString newFileName = QString("%1_%2_%3_%4.log")
+ .arg(datePart)
+ .arg(timePart)
+ .arg(imei)
+ .arg(iccid);
+
+ QString newFilePath = fileInfo.absolutePath() + "/" + newFileName;
+
+ // 如果新文件名与当前文件名不同,重命名
+ if (newFilePath != testLogFilePath) {
+ // 先关闭文件
+ if (testLogFile->isOpen()) {
+ testLogFile->close();
+ }
+
+ // 重命名文件
+ QFile oldFile(testLogFilePath);
+ if (oldFile.rename(newFilePath)) {
+ testLogFilePath = newFilePath;
+ qDebug() << "日志文件已重命名:" << newFilePath;
+
+ // 重新打开文件(追加模式)
+ if (testLogFile->open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) {
+ testLogStream = new QTextStream(testLogFile);
+ testLogStream->setCodec("UTF-8");
+ } else {
+ qDebug() << "重命名后无法重新打开日志文件:" << newFilePath;
+ delete testLogFile;
+ testLogFile = nullptr;
+ testLogStream = nullptr;
+ }
+ } else {
+ qDebug() << "无法重命名日志文件:" << oldFile.errorString();
+ // 重新打开原文件
+ if (testLogFile->open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) {
+ testLogStream = new QTextStream(testLogFile);
+ testLogStream->setCodec("UTF-8");
+ }
+ }
+ }
+ }
+}
</property>
<property name="font">
<font>
- <pointsize>10</pointsize>
+ <pointsize>14</pointsize>
</font>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
- <widget class="QComboBox" name="portNameBox">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>30</y>
- <width>231</width>
- <height>31</height>
- </rect>
+ <layout class="QHBoxLayout" name="mainLayout">
+ <property name="spacing">
+ <number>6</number>
</property>
- </widget>
- <widget class="QTextEdit" name="recvTextEdit">
- <property name="geometry">
- <rect>
- <x>260</x>
- <y>20</y>
- <width>741</width>
- <height>401</height>
- </rect>
+ <property name="leftMargin">
+ <number>6</number>
</property>
- </widget>
- <widget class="QTextEdit" name="sendTextEdit">
- <property name="geometry">
- <rect>
- <x>260</x>
- <y>460</y>
- <width>741</width>
- <height>71</height>
- </rect>
+ <property name="topMargin">
+ <number>6</number>
</property>
- </widget>
- <widget class="QPushButton" name="openButton">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>90</y>
- <width>101</width>
- <height>51</height>
- </rect>
+ <property name="rightMargin">
+ <number>6</number>
</property>
- <property name="text">
- <string>打开串口</string>
+ <property name="bottomMargin">
+ <number>6</number>
</property>
- </widget>
- <widget class="QPushButton" name="clearRecvButton">
- <property name="geometry">
- <rect>
- <x>120</x>
- <y>90</y>
- <width>101</width>
- <height>51</height>
- </rect>
- </property>
- <property name="text">
- <string>清空数据</string>
- </property>
- </widget>
- <widget class="QPushButton" name="sendButton">
- <property name="geometry">
- <rect>
- <x>930</x>
- <y>540</y>
- <width>75</width>
- <height>23</height>
- </rect>
- </property>
- <property name="text">
- <string>发送</string>
- </property>
- </widget>
- <widget class="QLabel" name="Verlabel">
- <property name="geometry">
- <rect>
- <x>1010</x>
- <y>30</y>
- <width>21</width>
- <height>16</height>
- </rect>
- </property>
- <property name="text">
- <string>Ver:</string>
- </property>
- </widget>
- <widget class="QLineEdit" name="VerlineEdit">
- <property name="geometry">
- <rect>
- <x>1050</x>
- <y>30</y>
- <width>181</width>
- <height>20</height>
- </rect>
- </property>
- </widget>
- <widget class="QLabel" name="Verlabel_2">
- <property name="geometry">
- <rect>
- <x>1010</x>
- <y>60</y>
- <width>31</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>IMEI:</string>
- </property>
- </widget>
- <widget class="QLineEdit" name="IMEIlineEdit">
- <property name="geometry">
- <rect>
- <x>1050</x>
- <y>60</y>
- <width>181</width>
- <height>20</height>
- </rect>
- </property>
- </widget>
- <widget class="QLabel" name="Verlabel_3">
- <property name="geometry">
- <rect>
- <x>1010</x>
- <y>90</y>
- <width>41</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>ICCID</string>
- </property>
- </widget>
- <widget class="QLineEdit" name="ICCIDlineEdit">
- <property name="geometry">
- <rect>
- <x>1050</x>
- <y>90</y>
- <width>181</width>
- <height>20</height>
- </rect>
- </property>
- </widget>
- <widget class="QLineEdit" name="ModemVerlineEdit">
- <property name="geometry">
- <rect>
- <x>1050</x>
- <y>120</y>
- <width>251</width>
- <height>20</height>
- </rect>
- </property>
- </widget>
- <widget class="QLabel" name="Verlabel_4">
- <property name="geometry">
- <rect>
- <x>1010</x>
- <y>120</y>
- <width>41</width>
- <height>21</height>
- </rect>
- </property>
- <property name="text">
- <string>Modem:</string>
- </property>
- </widget>
- <widget class="QPushButton" name="openButton_2">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>160</y>
- <width>101</width>
- <height>51</height>
- </rect>
- </property>
- <property name="text">
- <string>开始产测</string>
- </property>
- </widget>
- <widget class="QPushButton" name="openRecordsFolderButton">
- <property name="geometry">
- <rect>
- <x>120</x>
- <y>160</y>
- <width>101</width>
- <height>51</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string>QPushButton {
-background-color: #FF9800;
+ <item>
+ <widget class="QWidget" name="leftPanel">
+ <property name="maximumSize">
+ <size>
+ <width>280</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <layout class="QVBoxLayout" name="leftLayout">
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QComboBox" name="portNameBox">
+ <property name="font">
+ <font>
+ <family>Arial</family>
+ <pointsize>14</pointsize>
+ </font>
+ </property>
+ <property name="sizeAdjustPolicy">
+ <enum>QComboBox::AdjustToContentsOnFirstShow</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QGridLayout" name="buttonGridLayout">
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <item row="2" column="0">
+ <widget class="QPushButton" name="openButton_2">
+ <property name="font">
+ <font>
+ <family>Agra</family>
+ <pointsize>14</pointsize>
+ </font>
+ </property>
+ <property name="text">
+ <string>开始产测</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0">
+ <widget class="QPushButton" name="openButton">
+ <property name="font">
+ <font>
+ <family>Agra</family>
+ <pointsize>14</pointsize>
+ </font>
+ </property>
+ <property name="text">
+ <string>打开串口</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0">
+ <widget class="QPushButton" name="agingTestButton_2">
+ <property name="font">
+ <font>
+ <family>Agra</family>
+ <pointsize>14</pointsize>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="styleSheet">
+ <string>QPushButton {
+background-color: #9C27B0;
color: white;
border-radius: 4px;
font-weight: bold;
}
QPushButton:hover {
-background-color: #F57C00;
+background-color: #7B1FA2;
}</string>
- </property>
- <property name="text">
- <string>打开记录</string>
- </property>
- </widget>
- <widget class="QPushButton" name="agingTestButton">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>220</y>
- <width>101</width>
- <height>51</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string>QPushButton {
+ </property>
+ <property name="text">
+ <string>恢复出厂</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0">
+ <widget class="QPushButton" name="agingTestButton">
+ <property name="font">
+ <font>
+ <family>Agra</family>
+ <pointsize>14</pointsize>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="styleSheet">
+ <string>QPushButton {
background-color: #9C27B0;
color: white;
border-radius: 4px;
QPushButton:hover {
background-color: #7B1FA2;
}</string>
- </property>
- <property name="text">
- <string>老化测试</string>
- </property>
- </widget>
- <widget class="QLabel" name="ExpectedVerLabel">
- <property name="geometry">
- <rect>
- <x>1010</x>
- <y>180</y>
- <width>61</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>最新VER:</string>
- </property>
- </widget>
- <widget class="QLineEdit" name="expectedVerLineEdit">
- <property name="geometry">
- <rect>
- <x>1070</x>
- <y>180</y>
- <width>231</width>
- <height>20</height>
- </rect>
- </property>
- </widget>
- <widget class="QLabel" name="ExpectedModemLabel">
- <property name="geometry">
- <rect>
- <x>1010</x>
- <y>210</y>
- <width>81</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>最新MODEM:</string>
- </property>
- </widget>
- <widget class="QLineEdit" name="expectedModemVerLineEdit">
- <property name="geometry">
- <rect>
- <x>1090</x>
- <y>210</y>
- <width>231</width>
- <height>20</height>
- </rect>
- </property>
- </widget>
- <widget class="QGroupBox" name="testStatusGroupBox">
- <property name="geometry">
- <rect>
- <x>1010</x>
- <y>330</y>
- <width>261</width>
- <height>271</height>
- </rect>
- </property>
- <property name="title">
- <string>产测状态</string>
- </property>
- <widget class="QLabel" name="lcdTestLabel">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>25</y>
- <width>60</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>LCD测试:</string>
- </property>
- </widget>
- <widget class="QLabel" name="lcdStatusIcon">
- <property name="geometry">
- <rect>
- <x>80</x>
- <y>25</y>
- <width>20</width>
- <height>20</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string>color: #888888; font-size: 18px; font-weight: bold;</string>
- </property>
- <property name="text">
- <string>○</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- <widget class="QLabel" name="lcdStatusText">
- <property name="geometry">
- <rect>
- <x>110</x>
- <y>25</y>
- <width>60</width>
- <height>20</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string>color: #888888;</string>
- </property>
- <property name="text">
- <string>未测试</string>
- </property>
- </widget>
- <widget class="QLabel" name="motorTestLabel">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>55</y>
- <width>60</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>马达测试:</string>
- </property>
- </widget>
- <widget class="QLabel" name="motorStatusIcon">
- <property name="geometry">
- <rect>
- <x>80</x>
- <y>55</y>
- <width>20</width>
- <height>20</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string>color: #888888; font-size: 18px; font-weight: bold;</string>
- </property>
- <property name="text">
- <string>○</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- <widget class="QLabel" name="motorStatusText">
- <property name="geometry">
- <rect>
- <x>110</x>
- <y>55</y>
- <width>60</width>
- <height>20</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string>color: #888888;</string>
- </property>
- <property name="text">
- <string>未测试</string>
- </property>
- </widget>
- <widget class="QLabel" name="keyTestLabel">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>85</y>
- <width>60</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>按键测试:</string>
- </property>
- </widget>
- <widget class="QLabel" name="keyStatusIcon">
- <property name="geometry">
- <rect>
- <x>80</x>
- <y>85</y>
- <width>20</width>
- <height>20</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string>color: #888888; font-size: 18px; font-weight: bold;</string>
- </property>
- <property name="text">
- <string>○</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- <widget class="QLabel" name="keyStatusText">
- <property name="geometry">
- <rect>
- <x>110</x>
- <y>85</y>
- <width>60</width>
- <height>20</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string>color: #888888;</string>
- </property>
- <property name="text">
- <string>未测试</string>
- </property>
- </widget>
- <widget class="QLabel" name="audioTestLabel">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>115</y>
- <width>60</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>录音测试:</string>
- </property>
- </widget>
- <widget class="QLabel" name="audioStatusIcon">
- <property name="geometry">
- <rect>
- <x>80</x>
- <y>115</y>
- <width>20</width>
- <height>20</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string>color: #888888; font-size: 18px; font-weight: bold;</string>
- </property>
- <property name="text">
- <string>○</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- <widget class="QLabel" name="audioStatusText">
- <property name="geometry">
- <rect>
- <x>110</x>
- <y>115</y>
- <width>60</width>
- <height>20</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string>color: #888888;</string>
- </property>
- <property name="text">
- <string>未测试</string>
- </property>
- </widget>
- <widget class="QLabel" name="batteryTestLabel">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>145</y>
- <width>60</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>电池测试:</string>
- </property>
- </widget>
- <widget class="QLabel" name="batteryStatusIcon">
- <property name="geometry">
- <rect>
- <x>80</x>
- <y>145</y>
- <width>20</width>
- <height>20</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string>color: #888888; font-size: 18px; font-weight: bold;</string>
- </property>
- <property name="text">
- <string>○</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- <widget class="QLabel" name="batteryStatusText">
- <property name="geometry">
- <rect>
- <x>110</x>
- <y>145</y>
- <width>60</width>
- <height>20</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string>color: #888888;</string>
- </property>
- <property name="text">
- <string>未测试</string>
- </property>
- </widget>
- <widget class="QLabel" name="gsensorTestLabel">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>175</y>
- <width>60</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>G-sensor:</string>
- </property>
- </widget>
- <widget class="QLabel" name="gsensorStatusIcon">
- <property name="geometry">
- <rect>
- <x>80</x>
- <y>175</y>
- <width>20</width>
- <height>20</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string>color: #888888; font-size: 18px; font-weight: bold;</string>
- </property>
- <property name="text">
- <string>○</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- <widget class="QLabel" name="gsensorStatusText">
- <property name="geometry">
- <rect>
- <x>110</x>
- <y>175</y>
- <width>60</width>
- <height>20</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string>color: #888888;</string>
- </property>
- <property name="text">
- <string>未测试</string>
- </property>
- </widget>
- <widget class="QLabel" name="bluetoothTestLabel">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>205</y>
- <width>60</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>蓝牙测试:</string>
- </property>
- </widget>
- <widget class="QLabel" name="bluetoothStatusIcon">
- <property name="geometry">
- <rect>
- <x>80</x>
- <y>205</y>
- <width>20</width>
- <height>20</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string>color: #888888; font-size: 18px; font-weight: bold;</string>
- </property>
- <property name="text">
- <string>○</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- <widget class="QLabel" name="bluetoothStatusText">
- <property name="geometry">
- <rect>
- <x>110</x>
- <y>205</y>
- <width>60</width>
- <height>20</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string>color: #888888;</string>
- </property>
- <property name="text">
- <string>未测试</string>
- </property>
- </widget>
- <widget class="QLabel" name="pppTestLabel">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>235</y>
- <width>60</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>4G测试:</string>
- </property>
- </widget>
- <widget class="QLabel" name="pppStatusIcon">
- <property name="geometry">
- <rect>
- <x>80</x>
- <y>235</y>
- <width>20</width>
- <height>20</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string>color: #888888; font-size: 18px; font-weight: bold;</string>
- </property>
- <property name="text">
- <string>○</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- <widget class="QLabel" name="pppStatusText">
- <property name="geometry">
- <rect>
- <x>110</x>
- <y>235</y>
- <width>60</width>
- <height>20</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string>color: #888888;</string>
- </property>
- <property name="text">
- <string>未测试</string>
- </property>
- </widget>
- <widget class="QLabel" name="overallTestLabel">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>265</y>
- <width>60</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>整体状态:</string>
- </property>
- </widget>
- <widget class="QLabel" name="overallStatusIcon">
- <property name="geometry">
- <rect>
- <x>80</x>
- <y>265</y>
- <width>20</width>
- <height>20</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string>color: #888888; font-size: 18px; font-weight: bold;</string>
- </property>
- <property name="text">
- <string>○</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- <widget class="QLabel" name="overallStatusText">
- <property name="geometry">
- <rect>
- <x>110</x>
- <y>265</y>
- <width>80</width>
- <height>20</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string>color: #888888;</string>
- </property>
- <property name="text">
- <string>等待开始</string>
- </property>
- </widget>
- </widget>
- <widget class="QPushButton" name="agingTestButton_2">
- <property name="geometry">
- <rect>
- <x>120</x>
- <y>220</y>
- <width>101</width>
- <height>51</height>
- </rect>
- </property>
- <property name="styleSheet">
- <string>QPushButton {
-background-color: #9C27B0;
+ </property>
+ <property name="text">
+ <string>老化测试</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QPushButton" name="clearRecvButton">
+ <property name="font">
+ <font>
+ <family>Agra</family>
+ <pointsize>14</pointsize>
+ </font>
+ </property>
+ <property name="text">
+ <string>清空数据</string>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="0">
+ <widget class="QPushButton" name="openButton_3">
+ <property name="font">
+ <font>
+ <family>Agra</family>
+ <pointsize>14</pointsize>
+ </font>
+ </property>
+ <property name="text">
+ <string>老化结果</string>
+ </property>
+ </widget>
+ </item>
+ <item row="7" column="0">
+ <widget class="QPushButton" name="openRecordsFolderButton">
+ <property name="font">
+ <font>
+ <family>Agra</family>
+ <pointsize>14</pointsize>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="styleSheet">
+ <string>QPushButton {
+background-color: #FF9800;
color: white;
border-radius: 4px;
font-weight: bold;
}
QPushButton:hover {
-background-color: #7B1FA2;
+background-color: #F57C00;
}</string>
- </property>
- <property name="text">
- <string>恢复出厂</string>
- </property>
- </widget>
- <widget class="QPushButton" name="openButton_3">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>280</y>
- <width>101</width>
- <height>51</height>
- </rect>
- </property>
- <property name="text">
- <string>老化结果</string>
- </property>
- </widget>
- <widget class="QLineEdit" name="PYVerlineEdit">
- <property name="geometry">
- <rect>
- <x>1050</x>
- <y>150</y>
- <width>251</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- <widget class="QLabel" name="Verlabel_5">
- <property name="geometry">
- <rect>
- <x>1010</x>
- <y>150</y>
- <width>41</width>
- <height>21</height>
- </rect>
- </property>
- <property name="text">
- <string>PYVER</string>
- </property>
- </widget>
- <widget class="QLabel" name="ExpectedModemLabel_2">
- <property name="geometry">
- <rect>
- <x>1010</x>
- <y>240</y>
- <width>81</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>最新PY:</string>
- </property>
- </widget>
- <widget class="QLineEdit" name="expectedPYVerLineEdit">
- <property name="geometry">
- <rect>
- <x>1090</x>
- <y>240</y>
- <width>231</width>
- <height>20</height>
- </rect>
- </property>
- </widget>
- <widget class="QLabel" name="BluetoothAddressLabel">
- <property name="geometry">
- <rect>
- <x>1010</x>
- <y>270</y>
- <width>71</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>蓝牙地址:</string>
- </property>
- </widget>
- <widget class="QLineEdit" name="bluetoothAddressLineEdit">
- <property name="geometry">
- <rect>
- <x>1090</x>
- <y>270</y>
- <width>231</width>
- <height>20</height>
- </rect>
- </property>
- <property name="placeholderText">
- <string>例如: 1C:1D:2B:68:82:68</string>
- </property>
- </widget>
- <widget class="QLabel" name="BluetoothRSSILabel">
- <property name="geometry">
- <rect>
- <x>1010</x>
- <y>300</y>
- <width>71</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>RSSI阈值:</string>
- </property>
- </widget>
- <widget class="QLineEdit" name="bluetoothRSSILineEdit">
- <property name="geometry">
- <rect>
- <x>1090</x>
- <y>300</y>
- <width>231</width>
- <height>20</height>
- </rect>
- </property>
- <property name="placeholderText">
- <string>例如: -80</string>
- </property>
- </widget>
- <widget class="QLineEdit" name="audioVolumeLineEdit">
- <property name="geometry">
- <rect>
- <x>110</x>
- <y>360</y>
- <width>101</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>2</string>
- </property>
- <property name="placeholderText">
- <string>例如: 2</string>
- </property>
- </widget>
- <widget class="QLabel" name="AudioVolumeLabel">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>360</y>
- <width>121</width>
- <height>20</height>
- </rect>
- </property>
- <property name="text">
- <string>音频测试音量:</string>
- </property>
- </widget>
+ </property>
+ <property name="text">
+ <string>打开记录</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="audioVolumeLayout">
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="AudioVolumeLabel">
+ <property name="font">
+ <font>
+ <family>Agra</family>
+ <pointsize>14</pointsize>
+ </font>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>音频测试音量</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="audioVolumeLineEdit">
+ <property name="font">
+ <font>
+ <family>Agra</family>
+ <pointsize>14</pointsize>
+ </font>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeft|Qt::AlignVCenter</set>
+ </property>
+ <property name="text">
+ <string>2</string>
+ </property>
+ <property name="placeholderText">
+ <string>例如: 2</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="leftSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QWidget" name="centerPanel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>5</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <layout class="QVBoxLayout" name="centerLayout">
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QTextEdit" name="recvTextEdit">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>1</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="sendLayout">
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QTextEdit" name="sendTextEdit">
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>71</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>100</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="sendButton">
+ <property name="text">
+ <string>发送</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QWidget" name="rightPanel">
+ <property name="minimumSize">
+ <size>
+ <width>380</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>2</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <layout class="QVBoxLayout" name="rightLayout">
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <item>
+ <layout class="QFormLayout" name="versionFormLayout">
+ <property name="horizontalSpacing">
+ <number>6</number>
+ </property>
+ <property name="verticalSpacing">
+ <number>4</number>
+ </property>
+ <item row="0" column="0">
+ <widget class="QLabel" name="Verlabel">
+ <property name="text">
+ <string>Ver:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLineEdit" name="VerlineEdit">
+ <property name="alignment">
+ <set>Qt::AlignLeft|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="Verlabel_2">
+ <property name="text">
+ <string>IMEI:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLineEdit" name="IMEIlineEdit">
+ <property name="alignment">
+ <set>Qt::AlignLeft|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="Verlabel_3">
+ <property name="text">
+ <string>ICCID</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QLineEdit" name="ICCIDlineEdit">
+ <property name="alignment">
+ <set>Qt::AlignLeft|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="Verlabel_4">
+ <property name="text">
+ <string>Modem:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QLineEdit" name="ModemVerlineEdit">
+ <property name="alignment">
+ <set>Qt::AlignLeft|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0">
+ <widget class="QLabel" name="Verlabel_5">
+ <property name="text">
+ <string>PYVER</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="1">
+ <widget class="QLineEdit" name="PYVerlineEdit">
+ <property name="alignment">
+ <set>Qt::AlignLeft|Qt::AlignVCenter</set>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0">
+ <widget class="QLabel" name="ExpectedVerLabel">
+ <property name="text">
+ <string>最新VER:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="1">
+ <widget class="QLineEdit" name="expectedVerLineEdit">
+ <property name="alignment">
+ <set>Qt::AlignLeft|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="0">
+ <widget class="QLabel" name="ExpectedModemLabel">
+ <property name="text">
+ <string>最新MODEM:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="1">
+ <widget class="QLineEdit" name="expectedModemVerLineEdit">
+ <property name="alignment">
+ <set>Qt::AlignLeft|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="7" column="0">
+ <widget class="QLabel" name="ExpectedModemLabel_2">
+ <property name="text">
+ <string>最新PY:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="7" column="1">
+ <widget class="QLineEdit" name="expectedPYVerLineEdit">
+ <property name="alignment">
+ <set>Qt::AlignLeft|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="8" column="0">
+ <widget class="QLabel" name="BluetoothAddressLabel">
+ <property name="text">
+ <string>蓝牙地址:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="8" column="1">
+ <widget class="QLineEdit" name="bluetoothAddressLineEdit">
+ <property name="alignment">
+ <set>Qt::AlignLeft|Qt::AlignVCenter</set>
+ </property>
+ <property name="placeholderText">
+ <string>例如: 1C:1D:2B:68:82:68</string>
+ </property>
+ </widget>
+ </item>
+ <item row="9" column="0">
+ <widget class="QLabel" name="BluetoothRSSILabel">
+ <property name="text">
+ <string>RSSI阈值:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="9" column="1">
+ <widget class="QLineEdit" name="bluetoothRSSILineEdit">
+ <property name="alignment">
+ <set>Qt::AlignLeft|Qt::AlignVCenter</set>
+ </property>
+ <property name="placeholderText">
+ <string>例如: -80</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QScrollArea" name="testStatusScrollArea">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>1</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="widgetResizable">
+ <bool>true</bool>
+ </property>
+ <widget class="QGroupBox" name="testStatusGroupBox">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>424</width>
+ <height>318</height>
+ </rect>
+ </property>
+ <property name="title">
+ <string>产测状态</string>
+ </property>
+ <layout class="QVBoxLayout" name="testStatusLayout">
+ <property name="spacing">
+ <number>4</number>
+ </property>
+ <property name="leftMargin">
+ <number>11</number>
+ </property>
+ <property name="topMargin">
+ <number>11</number>
+ </property>
+ <property name="rightMargin">
+ <number>11</number>
+ </property>
+ <property name="bottomMargin">
+ <number>15</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" name="lcdTestLayout">
+ <property name="spacing">
+ <number>4</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="lcdTestLabel">
+ <property name="text">
+ <string>LCD测试:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="lcdStatusIcon">
+ <property name="styleSheet">
+ <string>color: #888888; font-size: 18px; font-weight: bold;</string>
+ </property>
+ <property name="text">
+ <string>○</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="lcdStatusText">
+ <property name="styleSheet">
+ <string>color: #888888;</string>
+ </property>
+ <property name="text">
+ <string>未测试</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="lcdSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="motorTestLayout">
+ <property name="spacing">
+ <number>4</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="motorTestLabel">
+ <property name="text">
+ <string>马达测试:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="motorStatusIcon">
+ <property name="styleSheet">
+ <string>color: #888888; font-size: 18px; font-weight: bold;</string>
+ </property>
+ <property name="text">
+ <string>○</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="motorStatusText">
+ <property name="styleSheet">
+ <string>color: #888888;</string>
+ </property>
+ <property name="text">
+ <string>未测试</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="motorSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="keyTestLayout">
+ <property name="spacing">
+ <number>4</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="keyTestLabel">
+ <property name="text">
+ <string>按键测试:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="keyStatusIcon">
+ <property name="styleSheet">
+ <string>color: #888888; font-size: 18px; font-weight: bold;</string>
+ </property>
+ <property name="text">
+ <string>○</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="keyStatusText">
+ <property name="styleSheet">
+ <string>color: #888888;</string>
+ </property>
+ <property name="text">
+ <string>未测试</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="keySpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="audioTestLayout">
+ <property name="spacing">
+ <number>4</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="audioTestLabel">
+ <property name="text">
+ <string>录音测试:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="audioStatusIcon">
+ <property name="styleSheet">
+ <string>color: #888888; font-size: 18px; font-weight: bold;</string>
+ </property>
+ <property name="text">
+ <string>○</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="audioStatusText">
+ <property name="styleSheet">
+ <string>color: #888888;</string>
+ </property>
+ <property name="text">
+ <string>未测试</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="audioSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="batteryTestLayout">
+ <property name="spacing">
+ <number>4</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="batteryTestLabel">
+ <property name="text">
+ <string>电池测试:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="batteryStatusIcon">
+ <property name="styleSheet">
+ <string>color: #888888; font-size: 18px; font-weight: bold;</string>
+ </property>
+ <property name="text">
+ <string>○</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="batteryStatusText">
+ <property name="styleSheet">
+ <string>color: #888888;</string>
+ </property>
+ <property name="text">
+ <string>未测试</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="batterySpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="gsensorTestLayout">
+ <property name="spacing">
+ <number>4</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="gsensorTestLabel">
+ <property name="text">
+ <string>G-sensor:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="gsensorStatusIcon">
+ <property name="styleSheet">
+ <string>color: #888888; font-size: 18px; font-weight: bold;</string>
+ </property>
+ <property name="text">
+ <string>○</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="gsensorStatusText">
+ <property name="styleSheet">
+ <string>color: #888888;</string>
+ </property>
+ <property name="text">
+ <string>未测试</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="gsensorSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="bluetoothTestLayout">
+ <property name="spacing">
+ <number>4</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="bluetoothTestLabel">
+ <property name="text">
+ <string>蓝牙测试:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="bluetoothStatusIcon">
+ <property name="styleSheet">
+ <string>color: #888888; font-size: 18px; font-weight: bold;</string>
+ </property>
+ <property name="text">
+ <string>○</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="bluetoothStatusText">
+ <property name="styleSheet">
+ <string>color: #888888;</string>
+ </property>
+ <property name="text">
+ <string>未测试</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="bluetoothSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="pppTestLayout">
+ <property name="spacing">
+ <number>4</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="pppTestLabel">
+ <property name="text">
+ <string>4G测试:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="pppStatusIcon">
+ <property name="styleSheet">
+ <string>color: #888888; font-size: 18px; font-weight: bold;</string>
+ </property>
+ <property name="text">
+ <string>○</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="pppStatusText">
+ <property name="styleSheet">
+ <string>color: #888888;</string>
+ </property>
+ <property name="text">
+ <string>未测试</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="pppSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="overallTestLayout">
+ <property name="spacing">
+ <number>4</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="overallTestLabel">
+ <property name="text">
+ <string>整体状态:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="overallStatusIcon">
+ <property name="styleSheet">
+ <string>color: #888888; font-size: 18px; font-weight: bold;</string>
+ </property>
+ <property name="text">
+ <string>○</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="overallStatusText">
+ <property name="styleSheet">
+ <string>color: #888888;</string>
+ </property>
+ <property name="text">
+ <string>等待开始</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="overallSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="testStatusBottomSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>10</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<x>0</x>
<y>0</y>
<width>1309</width>
- <height>23</height>
+ <height>21</height>
</rect>
</property>
</widget>