2025-05-15T17:31:02
This commit is contained in:
parent
dc255f7fc1
commit
fe19f5ff17
BIN
experiment_data/sample_data/experiment-2-new.xlsx
Normal file
BIN
experiment_data/sample_data/experiment-2-new.xlsx
Normal file
Binary file not shown.
BIN
experiment_data/sample_data/experment-new.xlsx
Normal file
BIN
experiment_data/sample_data/experment-new.xlsx
Normal file
Binary file not shown.
Binary file not shown.
@ -8,7 +8,7 @@ CONFIG+=precompile_header
|
||||
PRECOMPILED_HEADER=stable.h
|
||||
|
||||
#
|
||||
VERSION = 0.9.7.3
|
||||
VERSION = 0.9.7.4
|
||||
# 设置目标文件名,包含版本号
|
||||
TARGET = AnalysisTool_$${VERSION}
|
||||
|
||||
@ -39,6 +39,7 @@ SOURCES += \
|
||||
ui/enthalpydatacorrectionform.cpp \
|
||||
ui/itemmanager.cpp \
|
||||
ui/localcustomplot.cpp \
|
||||
ui/printereditform.cpp \
|
||||
ui/printpreviewform.cpp \
|
||||
ui/rightwidget.cpp \
|
||||
thirdparty/easylogging/easylogging++.cc \
|
||||
@ -75,6 +76,7 @@ HEADERS += \
|
||||
ui/enthalpydatacorrectionform.h \
|
||||
ui/itemmanager.h \
|
||||
ui/localcustomplot.h \
|
||||
ui/printereditform.h \
|
||||
ui/printpreviewform.h \
|
||||
ui/rightwidget.h \
|
||||
thirdparty/easylogging/easylogging++.h \
|
||||
@ -107,6 +109,7 @@ FORMS += \
|
||||
ui/experimentsettingform.ui \
|
||||
ui/instrumentcoefficientform.ui \
|
||||
ui/oitautoanalysisparamform.ui \
|
||||
ui/printereditform.ui \
|
||||
ui/printpreviewform.ui \
|
||||
ui/realtimedataform.ui \
|
||||
ui/specificheatcomparisonmethodform.ui
|
||||
|
@ -116,6 +116,11 @@ void XlsxHandler::readPhaseData(QXlsx::Worksheet *workSheet, int &startLineIndex
|
||||
|
||||
void XlsxHandler::writeFile(const QString filePath)
|
||||
{
|
||||
if(Global::_curveExperimentDataVtr.empty()){
|
||||
logde<<"_curveExperimentDataVtr empty...";
|
||||
return;
|
||||
}
|
||||
|
||||
Global::ExperimentInfo& ei = Global::_experimentInfo;
|
||||
|
||||
QXlsx::Document xlsx;
|
||||
@ -230,6 +235,8 @@ void XlsxHandler::writeFile(const QString filePath)
|
||||
row++;
|
||||
|
||||
// phase data.
|
||||
logde<<"Global::_curveExperimentDataVtr size:"
|
||||
<<Global::_curveExperimentDataVtr.size();
|
||||
|
||||
const QVector<Global::ExperimentData>& edVtr =
|
||||
Global::_curveExperimentDataVtr.at(i).dataVtr;
|
||||
@ -257,6 +264,9 @@ void XlsxHandler::writeFile(const QString filePath)
|
||||
xlsx.write(phaseSizeRow , 1, ConPhaseSize);
|
||||
xlsx.write(phaseSizeRow , 2, phaseCount);
|
||||
|
||||
// Clear data.
|
||||
Global::clearExperimentData();
|
||||
|
||||
//
|
||||
logde<<"before xlsx save as...";
|
||||
if (!xlsx.saveAs(filePath)) {
|
||||
@ -348,31 +358,6 @@ void XlsxHandler::writeAnalysisOperation(const QString filePath)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
if (!xlsx->saveAs(filePath)) {
|
||||
qDebug() << "Failed to save xlsx file:" << filePath;
|
||||
// 检查和创建目录
|
||||
QDir dir(filePath);
|
||||
if (!dir.exists()) {
|
||||
qDebug() << "Directory does not exist. Creating directory...";
|
||||
dir.mkpath(".");
|
||||
}
|
||||
// 检查权限
|
||||
QFile file(filePath);
|
||||
if (!file.open(QIODevice::WriteOnly)) {
|
||||
qDebug() << "Permission denied:" << file.errorString();
|
||||
}
|
||||
// 检查磁盘空间
|
||||
QStorageInfo storageInfo(QDir::rootPath());
|
||||
if (storageInfo.bytesFree() < 1024 * 1024 * 10) { // 假设文件大小至少为10MB
|
||||
qDebug() << "Disk space is insufficient.";
|
||||
}
|
||||
// 尝试重新保存
|
||||
if (!xlsx->saveAs(filePath)) {
|
||||
qDebug() << "Save xlsx failed after retrying.";
|
||||
}
|
||||
}
|
||||
#endif
|
||||
//
|
||||
delete xlsx;
|
||||
logde<<"Save xlsx succ.";
|
||||
|
@ -123,6 +123,12 @@ double findNegativeStartPoint(double m, double b, double start, double end) {
|
||||
return std::numeric_limits<double>::infinity();
|
||||
}
|
||||
|
||||
void clearExperimentData()
|
||||
{
|
||||
_curveExperimentDataVtr.clear();
|
||||
_currentCurveExperimentDataPtr = nullptr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -121,6 +121,8 @@ extern ExperimentInfo _experimentInfo;
|
||||
extern QVector<CurveExperimentData> _curveExperimentDataVtr;
|
||||
extern CurveExperimentData* _currentCurveExperimentDataPtr;
|
||||
|
||||
void clearExperimentData();
|
||||
|
||||
// Instrument coefficient.
|
||||
extern bool _enthalpyCoefficientEnableFlag;
|
||||
///abc
|
||||
|
@ -59,8 +59,6 @@ int main(int argc, char *argv[])
|
||||
w.show();
|
||||
#endif
|
||||
|
||||
qDebug() << "Application version:" << qApp->applicationVersion();
|
||||
|
||||
// EnthalpyDataCorrectionForm edf;
|
||||
// edf.show();
|
||||
|
||||
|
@ -29,6 +29,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
,_coefficientSelectionForm(new CoefficientSelectionForm(this))
|
||||
,_printPreviewForm(new PrintPreviewForm(this))
|
||||
,_axisSettingForm(new AxisSettingForm(this))
|
||||
,_manuallyStopTheExperimentFlag(false)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
this->setToolTip(".....");
|
||||
@ -106,7 +107,7 @@ void MainWindow::connections()
|
||||
connect(_expertmentSettingForm, &ExperimentSettingForm::sigDeliverData,
|
||||
SerialPort::instance(), &SerialPort::slotDeliverData);
|
||||
#if 1
|
||||
// dynamic data
|
||||
// SerialPort.
|
||||
connect(SerialPort::instance(), &SerialPort::sigSendCommonData,
|
||||
_centralWidget, &CentralWidget::slotRecvCommonData);
|
||||
connect(SerialPort::instance(), &SerialPort::sigSendCommonData,
|
||||
@ -124,6 +125,8 @@ void MainWindow::connections()
|
||||
connect(SerialPort::instance(), &SerialPort::sigUpdateStatusbarMsg,
|
||||
this,&MainWindow::slotUpdateStatusbarMsg);
|
||||
|
||||
connect(SerialPort::instance(), &SerialPort::sigSaveExperimentalDataMsgBox,
|
||||
this,&MainWindow::slotSaveExperimentalDataMsgBox);
|
||||
#endif
|
||||
|
||||
// mode
|
||||
@ -235,7 +238,7 @@ bool MainWindow::saveAnalysisFile(const QString fileName)
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
bool MainWindow::saveFile(const QString fileName)
|
||||
bool MainWindow::saveFile(const QString fileName,const Global::Mode mode)
|
||||
{
|
||||
QString localFileName = fileName;
|
||||
if(fileName.isEmpty()){
|
||||
@ -243,9 +246,9 @@ bool MainWindow::saveFile(const QString fileName)
|
||||
}
|
||||
|
||||
QString folder;
|
||||
if(Global::_mode == Global::Mode::Analysis){
|
||||
if(mode == Global::Mode::Analysis){
|
||||
folder = Global::AnalysisStateFolder;
|
||||
}else if(Global::_mode == Global::Mode::Experiment){
|
||||
}else if(mode == Global::Mode::Experiment){
|
||||
folder = Global::SampleDataFloder;
|
||||
}
|
||||
|
||||
@ -259,9 +262,9 @@ bool MainWindow::saveFile(const QString fileName)
|
||||
return false;
|
||||
}
|
||||
|
||||
if(Global::_mode == Global::Mode::Analysis){
|
||||
if(mode == Global::Mode::Analysis){
|
||||
XlsxHandler::writeAnalysisOperation(filePath);
|
||||
}else if(Global::_mode == Global::Mode::Experiment){
|
||||
}else if(mode == Global::Mode::Experiment){
|
||||
XlsxHandler::writeFile(filePath);
|
||||
}
|
||||
|
||||
@ -280,13 +283,15 @@ void MainWindow::on_actionStop_triggered()
|
||||
// if(saveExperimentFile(Global::_experimentInfo.sampleName)){
|
||||
// _leftWidget->reloadFileName();
|
||||
// }
|
||||
if(saveFile(Global::_experimentInfo.sampleName)){
|
||||
if(saveFile(Global::_experimentInfo.sampleName,Global::Mode::Experiment)){
|
||||
_leftWidget->reloadFileName();
|
||||
}
|
||||
#endif
|
||||
|
||||
// Set software mode to analysis.
|
||||
Global::_mode = Global::Mode::Analysis;
|
||||
|
||||
_manuallyStopTheExperimentFlag = true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -297,6 +302,8 @@ void MainWindow::on_actionNew_triggered()
|
||||
|
||||
void MainWindow::on_actionStart_triggered()
|
||||
{
|
||||
on_actionClearAllData_triggered();
|
||||
|
||||
QByteArray ba = DataParser::setDeviceStartStop(DeviceStartMode::Start);
|
||||
|
||||
QString hexData = ba.toHex(' '); // ' ' 作为分隔符,可选参数
|
||||
@ -307,6 +314,8 @@ void MainWindow::on_actionStart_triggered()
|
||||
Global::_mode = Global::Mode::Experiment;
|
||||
|
||||
logde<<"start experiment,set soft into experiment mode.";
|
||||
|
||||
_manuallyStopTheExperimentFlag = false;
|
||||
}
|
||||
|
||||
void MainWindow::on_actionReadOnly_triggered()
|
||||
@ -320,6 +329,24 @@ void MainWindow::on_actionRealTimeWidget_triggered()
|
||||
_realTimeDataForm->show();
|
||||
}
|
||||
|
||||
void MainWindow::slotSaveExperimentalDataMsgBox()
|
||||
{
|
||||
if(_manuallyStopTheExperimentFlag){
|
||||
return;
|
||||
}
|
||||
|
||||
QMessageBox::StandardButton reply;
|
||||
reply = QMessageBox::question(this, "数据保存提示", "是否保存实验数据?",
|
||||
QMessageBox::Yes | QMessageBox::No);
|
||||
if (reply == QMessageBox::Yes) {
|
||||
saveFile(Global::_experimentInfo.sampleName,Global::Mode::Experiment);
|
||||
} else {
|
||||
on_actionClearAllData_triggered();
|
||||
// Clear data.
|
||||
Global::clearExperimentData();
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::on_actionConnectToDev_triggered()
|
||||
{
|
||||
if (SerialPort::instance()->openSp())
|
||||
@ -462,5 +489,5 @@ void MainWindow::on_actionAxisSetting_triggered()
|
||||
|
||||
void MainWindow::on_actionSaveData_triggered()
|
||||
{
|
||||
saveFile(Global::_experimentInfo.sampleName);
|
||||
saveFile(Global::_experimentInfo.sampleName,Global::_mode);
|
||||
}
|
||||
|
@ -49,6 +49,8 @@ private slots:
|
||||
void on_actionReadOnly_triggered();
|
||||
void on_actionRealTimeWidget_triggered();
|
||||
|
||||
void slotSaveExperimentalDataMsgBox();
|
||||
|
||||
//analysis
|
||||
void on_actionNumericalLabel_triggered();
|
||||
void on_actionStartPoint_triggered();
|
||||
@ -101,8 +103,9 @@ private:
|
||||
bool saveAnalysisFile(const QString fileName);
|
||||
#endif
|
||||
|
||||
bool saveFile(const QString fileName);
|
||||
bool saveFile(const QString fileName,const Global::Mode);
|
||||
private:
|
||||
bool _manuallyStopTheExperimentFlag;
|
||||
Ui::MainWindow *ui;
|
||||
CentralWidget *_centralWidget;
|
||||
EventHandler *_eventHandler;
|
||||
|
@ -39,7 +39,7 @@ bool commonDataParser(const QByteArray &ba, CommonData &cd)
|
||||
|
||||
|
||||
|
||||
QByteArray connectToDevice(const QVector<Phase> &vtr)
|
||||
QByteArray setExperimentInfo(const QVector<Phase> &vtr)
|
||||
{
|
||||
// const int phaseLength = sizeof(Phase);
|
||||
const int phaseLength = PHASE_BYTE_SIZE;
|
||||
@ -168,9 +168,11 @@ void experimentalStateSwitching(const CommonData &cd)
|
||||
#endif
|
||||
}
|
||||
|
||||
// logde<<"phase:"<<(int)cd.current_phase;
|
||||
// logde<<"run type:"<<(int)cd.run_type;
|
||||
// logde<<"software mode:"<<Global::_mode;
|
||||
#if 0
|
||||
logde<<"phase:"<<(int)cd.current_phase;
|
||||
logde<<"run type:"<<(int)cd.run_type;
|
||||
logde<<"software mode:"<<Global::_mode;
|
||||
#endif
|
||||
}
|
||||
|
||||
unsigned short modbusCRC16(unsigned char *data, unsigned short length)
|
||||
|
@ -9,7 +9,8 @@
|
||||
#include "defines.h"
|
||||
|
||||
namespace DataParser {
|
||||
QByteArray connectToDevice(const QVector<Phase>&);
|
||||
|
||||
QByteArray setExperimentInfo(const QVector<Phase>&);
|
||||
QByteArray inquirePhaseInfo();
|
||||
QByteArray setDeviceStartStop(const DeviceStartMode);
|
||||
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include <qdatetime.h>
|
||||
#include <iostream>
|
||||
#include <cstring>
|
||||
#include <qmessagebox.h>
|
||||
#include <QSerialPortInfo>
|
||||
|
||||
#include "protocol.h"
|
||||
@ -98,10 +99,12 @@ void SerialPort::slotReadData()
|
||||
if(ba.size() == 0){
|
||||
return;
|
||||
}
|
||||
#if 1
|
||||
|
||||
#if 0
|
||||
QString hexData = ba.toHex(' '); // ' ' 作为分隔符,可选参数
|
||||
qDebug() << "receive info (hex):" << hexData;
|
||||
logde << "receive info (hex):" << hexData.toStdString();
|
||||
#endif
|
||||
|
||||
SerialPortProtocol *spp = (SerialPortProtocol *)ba.data();
|
||||
if (FRANE_HEAD != spp->head)
|
||||
{
|
||||
@ -128,8 +131,7 @@ void SerialPort::slotReadData()
|
||||
else if (READ_CMD == spp->cmd)
|
||||
{
|
||||
DataParser::experimentalStateSwitching(cd);
|
||||
setAxis();
|
||||
updateStatusbarMsg(cd);
|
||||
updateStatus(cd);
|
||||
|
||||
if (spp->addr == 0)
|
||||
{
|
||||
@ -137,19 +139,23 @@ void SerialPort::slotReadData()
|
||||
{
|
||||
emit sigSendCommonData(cd);
|
||||
}
|
||||
// emit sigSendCommonDataToRealDataForm(cd);
|
||||
// emit sigSendCommonDataToRealDataForm(cd);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SerialPort::updateStatusbarMsg(const CommonData &cd)
|
||||
void SerialPort::updateStatus(const CommonData &cd)
|
||||
{
|
||||
#if 1
|
||||
logde<<"phase:"<<(int)cd.current_phase;
|
||||
logde<<"run type:"<<(int)cd.run_type;
|
||||
// logde<<"phase:"<<(int)cd.current_phase;
|
||||
// logde<<"run type:"<<(int)cd.run_type;
|
||||
logde<<"software mode:"<<Global::_mode;
|
||||
#endif
|
||||
|
||||
//
|
||||
updateAxis();
|
||||
|
||||
// Update axis.
|
||||
bool experimentEnded = false;
|
||||
QString devRunModeStr;
|
||||
switch(cd.run_type){
|
||||
@ -178,6 +184,21 @@ void SerialPort::updateStatusbarMsg(const CommonData &cd)
|
||||
}
|
||||
|
||||
emit sigUpdateStatusbarMsg(msg);
|
||||
|
||||
// If save experiment data.
|
||||
static Global::Mode preMode = Global::Mode::Analysis;
|
||||
bool sendSignalFlag = false;
|
||||
if(Global::_mode != preMode){
|
||||
if(preMode == Global::Mode::Experiment
|
||||
&& Global::_mode == Global::Mode::Analysis){
|
||||
sendSignalFlag = true;
|
||||
}
|
||||
|
||||
preMode = Global::_mode;
|
||||
}
|
||||
if(sendSignalFlag){
|
||||
emit sigSaveExperimentalDataMsgBox();
|
||||
}
|
||||
}
|
||||
|
||||
void SerialPort::commonDataParser(const int dataLength, const u16 addr,
|
||||
@ -432,7 +453,7 @@ void SerialPort::displayPortInfo()
|
||||
}
|
||||
}
|
||||
|
||||
void SerialPort::setAxis()
|
||||
void SerialPort::updateAxis()
|
||||
{
|
||||
static Global::Mode previousMode = Global::Analysis; // 记录上一次的模式
|
||||
|
||||
@ -494,18 +515,16 @@ void SerialPort::parserTest()
|
||||
|
||||
void SerialPort::slotDeliverData(const QByteArray &ba)
|
||||
{
|
||||
qDebug()<<"slotDeliverData...";
|
||||
openSp();
|
||||
|
||||
slotSendData(ba);
|
||||
}
|
||||
|
||||
void SerialPort::slotSendData(const QByteArray &ba)
|
||||
{
|
||||
#if 1
|
||||
qDebug() << "slotSendData:" << ba.size();
|
||||
logde << "slotSendData:" << ba.size();
|
||||
QString hexData = ba.toHex(' '); // ' ' 作为分隔符,可选参数
|
||||
qDebug() << "slotSendData:" << hexData;
|
||||
logde << "slotSendData:" << hexData.toStdString();
|
||||
#endif
|
||||
|
||||
if (_sp != nullptr && _sp->isOpen())
|
||||
|
@ -36,6 +36,7 @@ signals:
|
||||
void sigSendPhaseInfo(const QByteArray &);
|
||||
void sigAxisModify(const float temp);
|
||||
void sigUpdateStatusbarMsg(const QString &);
|
||||
void sigSaveExperimentalDataMsgBox();
|
||||
public slots:
|
||||
void slotDeliverData(const QByteArray &);
|
||||
// void slotConnectToDevice(const QByteArray&);
|
||||
@ -45,11 +46,11 @@ private slots:
|
||||
void slotReadData();
|
||||
|
||||
private:
|
||||
void updateStatusbarMsg(const CommonData &cd);
|
||||
void updateStatus(const CommonData &cd);
|
||||
void updateAxis();
|
||||
void commonDataParser(const int dataLength, const u16 addr, const CommonData &cd);
|
||||
void to_hex(char *in_char, int char_length, char *out_char);
|
||||
void displayPortInfo();
|
||||
void setAxis();
|
||||
private:
|
||||
SerialPort(QObject *parent = nullptr);
|
||||
QSerialPort *_sp;
|
||||
|
@ -211,8 +211,6 @@ void CentralWidget::slotModeModify(const Global::Mode mode)
|
||||
|
||||
void CentralWidget::slotRecvCommonData(const CommonData &cd)
|
||||
{
|
||||
// logde<<"slotRecvCommonData...";
|
||||
|
||||
static double index = 0.0;
|
||||
|
||||
if(!_currentCurve){
|
||||
@ -220,7 +218,7 @@ void CentralWidget::slotRecvCommonData(const CommonData &cd)
|
||||
_currentCurve = new QCPCurve(_customPlot->xAxis, _customPlot->yAxis);
|
||||
}
|
||||
|
||||
// logde<<"temp:"<<cd.sample_temp<<",dsc:"<<cd.dsc;
|
||||
logde<<"temp:"<<cd.sample_temp<<",dsc:"<<cd.dsc;
|
||||
|
||||
_currentCurve->addData(index++,cd.sample_temp, cd.dsc);
|
||||
|
||||
|
@ -425,8 +425,10 @@ void ExperimentSettingForm::on_pushButton_deliverData_clicked()
|
||||
|
||||
ei.initialAtmosPhere = (GasType)(ui->comboBox_phase_1_atmosphere->currentIndex());
|
||||
#endif
|
||||
|
||||
//
|
||||
QByteArray ba = DataParser::connectToDevice(phaseVtr);
|
||||
QByteArray ba = DataParser::setExperimentInfo(phaseVtr);
|
||||
|
||||
qDebug() << "ba size:" << ba.size();
|
||||
emit sigDeliverData(ba);
|
||||
hide();
|
||||
@ -493,7 +495,7 @@ void ExperimentSettingForm::slotPhaseCheck()
|
||||
|
||||
void ExperimentSettingForm::slotRecvPhaseInfo(const QByteArray &ba)
|
||||
{
|
||||
logde<<"-----------------------";
|
||||
logde<<"----------------------- recv";
|
||||
QString hexData = ba.toHex(' '); // ' ' 作为分隔符,可选参数
|
||||
qDebug() << "slotRecvPhaseInfo hex:" << hexData;
|
||||
|
||||
|
14
src/ui/printereditform.cpp
Normal file
14
src/ui/printereditform.cpp
Normal file
@ -0,0 +1,14 @@
|
||||
#include "printereditform.h"
|
||||
#include "ui_printereditform.h"
|
||||
|
||||
PrinterEditForm::PrinterEditForm(QWidget *parent) :
|
||||
QWidget(parent),
|
||||
ui(new Ui::PrinterEditForm)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
}
|
||||
|
||||
PrinterEditForm::~PrinterEditForm()
|
||||
{
|
||||
delete ui;
|
||||
}
|
22
src/ui/printereditform.h
Normal file
22
src/ui/printereditform.h
Normal file
@ -0,0 +1,22 @@
|
||||
#ifndef PRINTEREDITFORM_H
|
||||
#define PRINTEREDITFORM_H
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
namespace Ui {
|
||||
class PrinterEditForm;
|
||||
}
|
||||
|
||||
class PrinterEditForm : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit PrinterEditForm(QWidget *parent = nullptr);
|
||||
~PrinterEditForm();
|
||||
|
||||
private:
|
||||
Ui::PrinterEditForm *ui;
|
||||
};
|
||||
|
||||
#endif // PRINTEREDITFORM_H
|
661
src/ui/printereditform.ui
Normal file
661
src/ui/printereditform.ui
Normal file
@ -0,0 +1,661 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>PrinterEditForm</class>
|
||||
<widget class="QWidget" name="PrinterEditForm">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>790</width>
|
||||
<height>366</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>10</y>
|
||||
<width>281</width>
|
||||
<height>181</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>GroupBox</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="formLayoutWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>30</y>
|
||||
<width>241</width>
|
||||
<height>121</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="Label">
|
||||
<property name="text">
|
||||
<string>样品名称:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="sampleNameLineEdit"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="Label_2">
|
||||
<property name="text">
|
||||
<string>样品质量:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="sampleWeightLineEdit"/>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="Label_3">
|
||||
<property name="text">
|
||||
<string>实验日期:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QLineEdit" name="dateTimeLineEdit"/>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="Label_4">
|
||||
<property name="text">
|
||||
<string>操作员:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QLineEdit" name="userLineEdit"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QGroupBox" name="groupBox_2">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>300</x>
|
||||
<y>10</y>
|
||||
<width>481</width>
|
||||
<height>301</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>GroupBox</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="gridLayoutWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>5</x>
|
||||
<y>37</y>
|
||||
<width>471</width>
|
||||
<height>251</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout" rowstretch="1,0,0,0,0,0,0,0">
|
||||
<property name="sizeConstraint">
|
||||
<enum>QLayout::SetDefaultConstraint</enum>
|
||||
</property>
|
||||
<item row="7" column="4">
|
||||
<widget class="QComboBox" name="comboBox_initial_atmosphere">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>NC</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>N2</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>O2</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="2">
|
||||
<widget class="QLineEdit" name="phase_2_scan_rate">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QCheckBox" name="checkBox_phase_2">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>2</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="3">
|
||||
<widget class="QLineEdit" name="phase_4_constant_temp">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="4">
|
||||
<widget class="QComboBox" name="comboBox_phase_2_atmosphere">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>NC</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>N2</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>O2</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QCheckBox" name="checkBox_phase_4">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>4</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="3">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>初始气氛:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="phase_1_cutoff_temp">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>100</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<widget class="QLineEdit" name="phase_5_cutoff_temp">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>100</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="2">
|
||||
<widget class="QLineEdit" name="phase_4_scan_rate">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QCheckBox" name="checkBox_phase_3">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>3</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>截止温度</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="4">
|
||||
<widget class="QComboBox" name="comboBox_phase_1_atmosphere">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>NC</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>N2</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>O2</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Maximum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>阶段</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QLineEdit" name="phase_3_cutoff_temp">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>100</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QLineEdit" name="phase_1_scan_rate">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="4">
|
||||
<widget class="QComboBox" name="comboBox_phase_6_atmosphere">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>NC</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>N2</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>O2</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="4">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>气氛</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="2">
|
||||
<widget class="QRadioButton" name="radioButton_OIT_not">
|
||||
<property name="text">
|
||||
<string>非OIT</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="4">
|
||||
<widget class="QComboBox" name="comboBox_phase_4_atmosphere">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>NC</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>N2</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>O2</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QCheckBox" name="checkBox_phase_5">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>5</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="1">
|
||||
<widget class="QRadioButton" name="radioButton_OIT">
|
||||
<property name="text">
|
||||
<string>OIT</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="2">
|
||||
<widget class="QLineEdit" name="phase_3_scan_rate">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="text">
|
||||
<string>测试类型:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="2">
|
||||
<widget class="QLineEdit" name="phase_6_scan_rate">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>100</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QCheckBox" name="checkBox_phase_1">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>1</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QLineEdit" name="phase_4_cutoff_temp">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>100</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<widget class="QLineEdit" name="phase_1_constant_temp">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="2">
|
||||
<widget class="QLineEdit" name="phase_5_scan_rate">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>100</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="3">
|
||||
<widget class="QLineEdit" name="phase_3_constant_temp">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="3">
|
||||
<widget class="QLineEdit" name="phase_5_constant_temp">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>100</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="3">
|
||||
<widget class="QLineEdit" name="phase_2_constant_temp">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QLineEdit" name="phase_2_cutoff_temp">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>100</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="3">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
<string>恒温时间</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="4">
|
||||
<widget class="QComboBox" name="comboBox_phase_3_atmosphere">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>NC</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>N2</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>O2</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<widget class="QCheckBox" name="checkBox_phase_6">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>6</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="3">
|
||||
<widget class="QLineEdit" name="phase_6_constant_temp">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>100</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>扫描速率</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="4">
|
||||
<widget class="QComboBox" name="comboBox_phase_5_atmosphere">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>NC</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>N2</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>O2</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="1">
|
||||
<widget class="QLineEdit" name="phase_6_cutoff_temp">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>100</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QGroupBox" name="groupBox_3">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>190</y>
|
||||
<width>281</width>
|
||||
<height>121</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>GroupBox</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="formLayoutWidget_2">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>70</x>
|
||||
<y>30</y>
|
||||
<width>141</width>
|
||||
<height>61</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout_2">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="Label_5">
|
||||
<property name="text">
|
||||
<string>X:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="sampleNameLineEdit_2"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="Label_6">
|
||||
<property name="text">
|
||||
<string>Y:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="sampleWeightLineEdit_2"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="pushButtonConfirm">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>380</x>
|
||||
<y>330</y>
|
||||
<width>80</width>
|
||||
<height>20</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>确定</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="pushButtonCancel">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>500</x>
|
||||
<y>330</y>
|
||||
<width>80</width>
|
||||
<height>20</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>取消</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
Loading…
Reference in New Issue
Block a user