#pragma warning(push,0) //#include "Family.h" #include #include #include //#include "ObjectEvent.h" #include "CurvePropertyEdit.h" #include "ui_CurvePropertyEdit.h" #include "CStringType.h" #include "LogIO.h" //#include "ObjProject.h" #include "ui_CurvePropertyEdit.h" #pragma warning(pop) extern char *DataTypea[]; extern int DataLengtha[]; CCurvePropertyEditDlg::CCurvePropertyEditDlg(QWidget * parent, Qt::WindowFlags flags) : QWidget(parent,flags) { m_pUI = new Ui::CurvePropertyEdit(); m_pUI->setupUi(this); int w=width(); int h=height(); if(NULL != parent) { parent->setFixedSize(w,h); } QObject::connect(m_pUI->okbtn, SIGNAL(clicked()), this, SLOT(slotSave())); QObject::connect(m_pUI->cancelbtn, SIGNAL(clicked()), this, SLOT(slotCancel())); tab1=m_pUI->PropertyTab->widget(0); tab2=m_pUI->PropertyTab->widget(1); m_pUI->PropertyTab->setCurrentIndex(0); m_pUI->cancelbtn->hide(); /* QObjectList ctls=tab1->children(); QLineEdit* liedit=tab1->findChild("lineEdit_CurveName"); liedit->setText("11"); //foreach (QObject* ctl,ctls) //{ // if (ctl->objectName()=="lineEdit_CurveName") // { // QLineEdit* liedit= (QLineEdit*)(ctl); // liedit->setText("11"); // } //} QObjectList ctls2=tab2->children(); foreach (QObject* ctl,ctls2) { if (ctl->objectName()=="lineEdit2_ArrayNum") { QLineEdit* liedit= (QLineEdit*)(ctl); liedit->setText("444"); } }*/ } void CCurvePropertyEditDlg::init() { //初始化 CLogIO logio(FileName.toStdString().c_str(),(unsigned int)CLogIO::modeReadWrite); if(!logio.mFile) return ; int c=12; QString str; for(int i=0;iPropertyTab->setTabEnabled(1,0); m_pUI->PropertyTab->setStyleSheet("QTabBar::tab:disabled {width: 0; color: transparent;}"); Slf_CURVE info; int index=logio.OpenCurve(CurveName.toStdString().c_str()); if(index<0) return; logio.GetCurveInfo(index,&info); logio.CloseCurve(index); QLineEdit *lineEdit_CurveName=tab1->findChild("lineEdit_CurveName"); QLineEdit *lineEdit_CurveName_2=tab1->findChild("lineEdit_CurveName_2"); QLineEdit *lineEdit_CurveUnit=tab1->findChild("lineEdit_CurveUnit"); QLineEdit *lineEdit_CurveUnit_2=tab1->findChild("lineEdit_CurveUnit_2"); QLineEdit *lineEdit_DepthUnit=tab1->findChild("lineEdit_DepthUnit"); QLineEdit *lineEdit_DepthUnit_2=tab1->findChild("lineEdit_DepthUnit_2"); QLineEdit *lineEdit_Sdep=tab1->findChild("lineEdit_Sdep"); QLineEdit *lineEdit_Edep=tab1->findChild("lineEdit_Edep"); QLineEdit *lineEdit_Rlev=tab1->findChild("lineEdit_Rlev"); QLineEdit *lineEdit_DataType=tab1->findChild("lineEdit_DataType"); QLineEdit *lineEdit_Min=tab1->findChild("lineEdit_Min"); QLineEdit *lineEdit_Max=tab1->findChild("lineEdit_Max"); QLineEdit *lineEdit_DefVal=tab1->findChild("lineEdit_DefVal"); lineEdit_CurveName->setText((QLatin1String(info.Name))); QRegExp regExp("[A-Z0-9]{0,100}");//正则表达式,第一位数字为a-z的数字,第二位为1-9的数字,后边是0-2位0-9的数字 lineEdit_CurveName->setValidator(new QRegExpValidator(regExp,this)); lineEdit_CurveName_2->setText(QString::fromLocal8Bit(info.AliasName)); lineEdit_CurveName_2->setValidator(new QRegExpValidator(regExp,this)); lineEdit_CurveUnit->setText(QLatin1String(info.Unit)); lineEdit_CurveUnit->setValidator(new QRegExpValidator(regExp,this)); lineEdit_CurveUnit_2->setText(QString::fromLocal8Bit(info.AliasUnit));//(QLatin1String(info.AliasUnit)); lineEdit_CurveUnit_2->setValidator(new QRegExpValidator(regExp,this)); lineEdit_DepthUnit->setText(QLatin1String(info.DepthUnit)); lineEdit_DepthUnit->setValidator(new QRegExpValidator(regExp,this)); lineEdit_DepthUnit_2->setText(QString::fromLocal8Bit(info.DepthHZUnit)); lineEdit_DepthUnit_2->setValidator(new QRegExpValidator(regExp,this)); lineEdit_Sdep->setText(QString("%1").arg(info.StartDepth)); lineEdit_Sdep->setValidator(new QDoubleValidator(-9999999,9999999,6,this)); lineEdit_Edep->setText(QString("%1").arg(info.EndDepth)); lineEdit_Edep->setValidator(new QDoubleValidator(-9999999,9999999,6,this)); lineEdit_Rlev->setText(QString("%1").arg(info.DepLevel)); lineEdit_Rlev->setValidator(new QDoubleValidator(-9999999,9999999,6,this)); regExp=QRegExp(str); lineEdit_DataType->setText(QLatin1String(Rep_STR[info.RepCode-1])); lineEdit_Sdep->setValidator(new QRegExpValidator(regExp,this)); lineEdit_Min->setText(QString("%1").arg(info.MinValue)); lineEdit_Min->setValidator(new QDoubleValidator(-9999999,9999999,6,this)); lineEdit_Max->setText(QString("%1").arg(info.MaxValue)); lineEdit_Max->setValidator(new QDoubleValidator(-9999999,9999999,6,this)); lineEdit_DefVal->setText(QString("%1").arg(info.DefVal)); lineEdit_DefVal->setValidator(new QDoubleValidator(-9999999,9999999,6,this)); } else { int index=logio.OpenWave(CurveName.toStdString().c_str()); if(index<0) return; Slf_WAVE info; logio.GetWaveInfo(index,&info); logio.CloseWave(index); if(info.RepCode>12) return; QLineEdit *lineEdit_CurveName=tab1->findChild("lineEdit_CurveName"); QLineEdit *lineEdit_CurveName_2=tab1->findChild("lineEdit_CurveName_2"); QLineEdit *lineEdit_CurveUnit=tab1->findChild("lineEdit_CurveUnit"); QLineEdit *lineEdit_CurveUnit_2=tab1->findChild("lineEdit_CurveUnit_2"); QLineEdit *lineEdit_DepthUnit=tab1->findChild("lineEdit_DepthUnit"); QLineEdit *lineEdit_DepthUnit_2=tab1->findChild("lineEdit_DepthUnit_2"); QLineEdit *lineEdit_Sdep=tab1->findChild("lineEdit_Sdep"); QLineEdit *lineEdit_Edep=tab1->findChild("lineEdit_Edep"); QLineEdit *lineEdit_Rlev=tab1->findChild("lineEdit_Rlev"); QLineEdit *lineEdit_DataType=tab1->findChild("lineEdit_DataType"); QLineEdit *lineEdit_Min=tab1->findChild("lineEdit_Min"); QLineEdit *lineEdit_Max=tab1->findChild("lineEdit_Max"); QLineEdit *lineEdit_DefVal=tab1->findChild("lineEdit_DefVal"); lineEdit_CurveName->setText((QLatin1String(info.Name))); lineEdit_CurveName->setValidator(new QRegExpValidator(regExp,this)); lineEdit_CurveName_2->setText(QString::fromLocal8Bit(info.AliasName)); lineEdit_CurveName_2->setValidator(new QRegExpValidator(regExp,this)); lineEdit_CurveUnit->setText(QLatin1String(info.Unit)); lineEdit_CurveUnit->setValidator(new QRegExpValidator(regExp,this)); lineEdit_CurveUnit_2->setText(QString::fromLocal8Bit(info.AliasUnit)); lineEdit_CurveUnit_2->setValidator(new QRegExpValidator(regExp,this)); lineEdit_DepthUnit->setText(QLatin1String(info.DepthUnit)); lineEdit_DepthUnit->setValidator(new QRegExpValidator(regExp,this)); lineEdit_DepthUnit_2->setText(QString::fromLocal8Bit(info.DepthHZUnit)); lineEdit_DepthUnit_2->setValidator(new QRegExpValidator(regExp,this)); lineEdit_Sdep->setText(QString("%1").arg(info.StartDepth)); lineEdit_Sdep->setValidator(new QDoubleValidator(-9999999,9999999,6,this)); lineEdit_Edep->setText(QString("%1").arg(info.EndDepth)); lineEdit_Edep->setValidator(new QDoubleValidator(-9999999,9999999,6,this)); lineEdit_Rlev->setText(QString("%1").arg(info.DepLevel)); lineEdit_Rlev->setValidator(new QDoubleValidator(-9999999,9999999,6,this)); regExp=QRegExp(str); lineEdit_DataType->setText(QLatin1String(Rep_STR[info.RepCode-1])); lineEdit_Min->setText(QString("%1").arg(info.MinValue)); lineEdit_Min->setValidator(new QDoubleValidator(-9999999,9999999,6,this)); lineEdit_Max->setText(QString("%1").arg(info.MaxValue)); lineEdit_Max->setValidator(new QDoubleValidator(-9999999,9999999,6,this)); lineEdit_DefVal->setText(QString("%1").arg(info.DefVal)); lineEdit_DefVal->setValidator(new QDoubleValidator(-9999999,9999999,6,this)); QLineEdit *lineEdit2_Name=tab2->findChild("lineEdit2_Name"); QLineEdit *lineEdit2_Name1=tab2->findChild("lineEdit2_Name1"); QLineEdit *lineEdit2_Unit=tab2->findChild("lineEdit2_Unit"); QLineEdit *lineEdit2_Unit1=tab2->findChild("lineEdit2_Unit1"); QLineEdit *lineEdit2_Start=tab2->findChild("lineEdit2_Start"); QLineEdit *lineEdit2_Rlev2=tab2->findChild("lineEdit2_Rlev2"); QLineEdit *lineEdit2_ArrayNum=tab2->findChild("lineEdit2_ArrayNum"); QLineEdit *lineEdit2_Sample=tab2->findChild("lineEdit2_Sample"); QLineEdit *lineEdit2_SampleTotal=tab2->findChild("lineEdit2_SampleTotal"); QComboBox *comboBox2_Type=tab2->findChild("comboBox2_Type"); comboBox2_Type->addItem(QString::fromLocal8Bit("线性刻度")); comboBox2_Type->addItem(QString::fromLocal8Bit("对数刻度")); comboBox2_Type->addItem(QString::fromLocal8Bit("指数刻度")); comboBox2_Type->setCurrentIndex(0); QObject::connect(lineEdit2_ArrayNum, SIGNAL(textChanged(const QString &)), this, SLOT(sampleChanged(const QString &))); QObject::connect(lineEdit2_Sample, SIGNAL(textChanged(const QString &)), this, SLOT(arrayChanged(const QString &))); QRegExp regExp("[A-Za-z0-9]{0,100}");//正则表达式,第一位数字为a-z的数字,第二位为1-9的数字,后边是0-2位0-9的数字 lineEdit2_Name->setText(QLatin1String(info.TimeName)); lineEdit2_Name->setValidator(new QRegExpValidator(regExp,this)); lineEdit2_Name1->setText(QString::fromLocal8Bit(info.TimeHZName)); lineEdit2_Name1->setValidator(new QRegExpValidator(regExp,this)); lineEdit2_Unit->setText(QLatin1String(info.TimeUnit)); lineEdit2_Unit->setValidator(new QRegExpValidator(regExp,this)); lineEdit2_Unit1->setText(QString::fromLocal8Bit(info.TimeHZUnit)); lineEdit2_Unit1->setValidator(new QRegExpValidator(regExp,this)); lineEdit2_Start->setText(QString("%1").arg(info.StartTime)); lineEdit2_Start->setValidator(new QDoubleValidator(-9999999,9999999,6,this)); lineEdit2_Rlev2->setText(QString("%1").arg(info.TimeLevel)); lineEdit2_Rlev2->setValidator(new QDoubleValidator(-9999999,9999999,6,this)); lineEdit2_ArrayNum->setText(QString("%1").arg(info.ArrayNum)); lineEdit2_ArrayNum->setValidator(new QIntValidator(0,9999999,this)); lineEdit2_Sample->setText(QString("%1").arg(info.TimeSamples)); lineEdit2_Sample->setValidator(new QIntValidator(0,9999999,this)); lineEdit2_SampleTotal->setText(QString("%1").arg(info.TimeSamples)); lineEdit2_SampleTotal->setValidator(new QIntValidator(0,99999999,this)); } logio.Close(); } void CCurvePropertyEditDlg::sampleChanged(const QString &str) { QLineEdit *lineEdit2_Sample=tab2->findChild("lineEdit2_Sample"); QLineEdit *lineEdit2_SampleTotal=tab2->findChild("lineEdit2_SampleTotal"); int TotalSample=lineEdit2_SampleTotal->text().toInt(); int mSample=lineEdit2_Sample->text().toInt(); if(TotalSample==0)return; int arrayNum=str.toInt(); int sample=TotalSample; if(sample!=TotalSample) { QMessageBox::warning(NULL,"提示","阵列数不是总元素个数的公约数,请重新输入"); QLineEdit *lineEdit2_ArrayNum=tab2->findChild("lineEdit2_ArrayNum"); lineEdit2_ArrayNum->setText(QString::number(TotalSample/mSample)); } else lineEdit2_Sample->setText(QString::number(sample)); } void CCurvePropertyEditDlg::arrayChanged(const QString &str) { QLineEdit *lineEdit2_ArrayNum=tab2->findChild("lineEdit2_ArrayNum"); QLineEdit *lineEdit2_SampleTotal=tab2->findChild("lineEdit2_SampleTotal"); int TotalSample=lineEdit2_SampleTotal->text().toInt(); int mArrayNum=lineEdit2_ArrayNum->text().toInt(); if(TotalSample==0)return; int sample=str.toInt(); int arrayNum=TotalSample/sample; if(arrayNum*sample!=TotalSample) { QMessageBox::warning(this,"提示","您所输入的元素个数不是总元素个数的公约数,请重新输入"); QLineEdit *lineEdit2_Sample=tab2->findChild("lineEdit2_Sample"); lineEdit2_Sample->setText(QString::number(TotalSample/mArrayNum)); } else lineEdit2_ArrayNum->setText(QString::number(arrayNum)); } void CCurvePropertyEditDlg::slotSave() { QLineEdit *lineEdit_CurveName=tab1->findChild("lineEdit_CurveName"); QString Name=lineEdit_CurveName->text(); CLogIO logio(FileName.toStdString().c_str(),(unsigned int)CLogIO::modeReadWrite); if(Name!=CurveName) { if(logio.FindObjectIndex(Name.toStdString().c_str())>=0) { QMessageBox::warning(this,"警告!","名称不能重复!"); return; } } Slf_FILE_MESSAGE ms; logio.GetFileMessage(ms); if(Type==0) { Slf_CURVE info; int index=logio.OpenCurve(CurveName.toStdString().c_str()); if(index<0) { return; } logio.GetCurveInfo(index,&info); QLineEdit *lineEdit_CurveName=tab1->findChild("lineEdit_CurveName"); QLineEdit *lineEdit_CurveName_2=tab1->findChild("lineEdit_CurveName_2"); QLineEdit *lineEdit_CurveUnit=tab1->findChild("lineEdit_CurveUnit"); QLineEdit *lineEdit_CurveUnit_2=tab1->findChild("lineEdit_CurveUnit_2"); QLineEdit *lineEdit_DepthUnit=tab1->findChild("lineEdit_DepthUnit"); QLineEdit *lineEdit_DepthUnit_2=tab1->findChild("lineEdit_DepthUnit_2"); QLineEdit *lineEdit_DefVal=tab1->findChild("lineEdit_DefVal"); strcpy(info.Name,lineEdit_CurveName->text().toStdString().c_str()); strcpy(info.AliasName,lineEdit_CurveName_2->text().toStdString().c_str()); //汉字写回去不对了呀?????? strcpy(info.Unit,lineEdit_CurveUnit->text().toStdString().c_str()); strcpy(info.AliasUnit,lineEdit_CurveUnit_2->text().toStdString().c_str()); strcpy(info.DepthUnit,lineEdit_DepthUnit->text().toStdString().c_str()); strcpy(info.DepthHZUnit,lineEdit_DepthUnit_2->text().toStdString().c_str()); info.DefVal=lineEdit_DefVal->text().toFloat(); logio.SetCurveInfo(index,&info); logio.CloseCurve(index); } else { int index=logio.OpenWave(CurveName.toStdString().c_str()); if(index<0) return; Slf_WAVE info; logio.GetWaveInfo(index,&info); QLineEdit *lineEdit_CurveName=tab1->findChild("lineEdit_CurveName"); QLineEdit *lineEdit_CurveName_2=tab1->findChild("lineEdit_CurveName_2"); QLineEdit *lineEdit_CurveUnit=tab1->findChild("lineEdit_CurveUnit"); QLineEdit *lineEdit_CurveUnit_2=tab1->findChild("lineEdit_CurveUnit_2"); QLineEdit *lineEdit_DepthUnit=tab1->findChild("lineEdit_DepthUnit"); QLineEdit *lineEdit_DepthUnit_2=tab1->findChild("lineEdit_DepthUnit_2"); QLineEdit *lineEdit_DefVal=tab1->findChild("lineEdit_DefVal"); strcpy(info.Name,lineEdit_CurveName->text().toStdString().c_str()); strcpy(info.AliasName,lineEdit_CurveName_2->text().toStdString().c_str()); strcpy(info.Unit,lineEdit_CurveUnit->text().toStdString().c_str()); strcpy(info.AliasUnit,lineEdit_CurveUnit_2->text().toStdString().c_str()); strcpy(info.DepthUnit,lineEdit_DepthUnit->text().toStdString().c_str()); strcpy(info.DepthHZUnit,lineEdit_DepthUnit_2->text().toStdString().c_str()); info.DefVal=lineEdit_DefVal->text().toFloat(); QLineEdit *lineEdit2_Name=tab2->findChild("lineEdit2_Name"); QLineEdit *lineEdit2_Name1=tab2->findChild("lineEdit2_Name1"); QLineEdit *lineEdit2_Unit=tab2->findChild("lineEdit2_Unit"); QLineEdit *lineEdit2_Unit1=tab2->findChild("lineEdit2_Unit1"); QLineEdit *lineEdit2_Start=tab2->findChild("lineEdit2_Start"); QLineEdit *lineEdit2_Rlev2=tab2->findChild("lineEdit2_Rlev2"); QLineEdit *lineEdit2_ArrayNum=tab2->findChild("lineEdit2_ArrayNum"); QLineEdit *lineEdit2_Sample=tab2->findChild("lineEdit2_Sample"); QLineEdit *lineEdit2_SampleTotal=tab2->findChild("lineEdit2_SampleTotal"); QComboBox *comboBox2_Type=tab2->findChild("comboBox2_Type"); strcpy(info.TimeName,lineEdit2_Name->text().toStdString().c_str()); strcpy(info.TimeHZName,lineEdit2_Name1->text().toStdString().c_str()); strcpy(info.TimeUnit,lineEdit2_Unit->text().toStdString().c_str()); strcpy(info.TimeHZUnit,lineEdit2_Unit1->text().toStdString().c_str()); info.StartTime=lineEdit2_Start->text().toFloat(); info.TimeLevel=lineEdit2_Rlev2->text().toFloat(); info.ArrayNum=lineEdit2_ArrayNum->text().toInt(); info.TimeSamples=lineEdit2_Sample->text().toInt(); logio.SetWaveInfo(index,&info); logio.CloseWave(index); } logio.Close(); //GetObjectEvent().OnDeAttchData(FileName,CurveName); //GetObjectEvent().OnRefreshData(FileName,CurveName); if(Name!=CurveName) { QStringList NodeNames; NodeNames.push_back(ms.WellName); NodeNames.push_back(FileName); NodeNames.push_back(CurveName); NodeNames.push_back(Name); //PaiObject::m_EventAgent.ObjectPropertyChanged(GetProject(),"CurvePropertyEdit",NodeNames); } QMessageBox::information(this,"提示","保存成功!"); //accept(); } /** *@brief 取消槽函数 */ void CCurvePropertyEditDlg::slotCancel() { //reject (); } void CCurvePropertyEditDlg::closeEvent(QCloseEvent *) { emit signalsCloseed(); //throw std::logic_error("The method or operation is not implemented."); }