#include "ptExtraInfoDlg.h" #include "ui_ptExtraInfoDlg.h" #include "baseProperty.h" #include "basePropertyManager.h" #include #include PtExtraInfoDlg::PtExtraInfoDlg(QWidget *parent) : BaseContentDlg(parent) , ui(new Ui::ptExtraInfoDlg) { ui->setupUi(this); _stateGroup_pt = new QButtonGroup(this); _stateGroup_pt->addButton(ui->rb_tpt_pt,1); _stateGroup_pt->addButton(ui->rb_spt_pt,0); connect(ui->btn_add_pt,&QPushButton::clicked,this,&PtExtraInfoDlg::onAddClicked); _count = 0; } PtExtraInfoDlg::~PtExtraInfoDlg() { delete ui; } void PtExtraInfoDlg::createGroupView(groupStateInfo infos) { for(auto& info:infos.info) { propertyContentInfo inf; inf.proName = info.name; inf.proType = info.type; _mapPro.insert(info.name,inf); } } QMap PtExtraInfoDlg::getPropertyValue(BaseProperty* pPro) { QMap map; for(auto &pro:_mapPro) { propertyStateInfo info; info.type = pro.proType; info.name = pro.proName; if(info.name == "额定电压") //此处应为类型名 { info.defaultValue = ui->le_ratedVol->text(); } else if(info.name == "工频耐压") { info.defaultValue = ui->le_pfwv_pt->text(); } else if(info.name == "冲击耐压") { info.defaultValue = ui->le_iwv_pt->text(); } else if(info.name == "额定电压因数") { info.defaultValue = ui->le_ratedVolFactor->text(); } else if(info.name == "一次绕组接线接地方式") { info.defaultValue = ui->le_pwwgm->text(); } else if(info.name == "额定频率") { info.defaultValue = ui->le_rf_pt->text(); } else if(info.name == "相数") { if(ui->rb_tpt_pt->isChecked()) info.defaultValue = 1; else info.defaultValue = 0; } else if(info.name == "pt绕组") { QJsonObject object; QJsonArray arr; for(auto info:_mapPT) { QJsonObject obj; obj["id"] = info.id; obj["transformationRatio"] = info.transRatio; obj["accuracyClass"] = info.accuracyClass; obj["secondaryLoadCapacity"] = info.secondaryLoadCapacity; obj["windingConnectionMethod"] = info.windingConnectionMethod; arr.push_back(obj); } object["winding"] = arr; info.defaultValue = object; } map.insert(pro.proName,info); } return map; } void PtExtraInfoDlg::setPropertyValue(QVariant var) { QMap map = var.value>(); for(auto &info:map) { if(info.name == "额定电压") //此处应为类型名 { ui->le_ratedVol->setText(QString::number(info.defaultValue.toDouble())); } else if(info.name == "工频耐压") { ui->le_pfwv_pt->setText(QString::number(info.defaultValue.toDouble())); } else if(info.name == "冲击耐压") { ui->le_iwv_pt->setText(QString::number(info.defaultValue.toDouble())); } else if(info.name == "额定电压因数") { ui->le_ratedVolFactor->setText(QString::number(info.defaultValue.toDouble())); } else if(info.name == "一次绕组接线接地方式") { ui->le_pwwgm->setText(info.defaultValue.toString()); } else if(info.name == "额定频率") { ui->le_rf_pt->setText(QString::number(info.defaultValue.toDouble())); } else if(info.name == "相数") { if(info.defaultValue.toInt() == 1) ui->rb_tpt_pt->setChecked(true); else ui->rb_spt_pt->setChecked(true); } else if(info.name == "pt绕组") { QJsonObject object = info.defaultValue.toJsonObject(); QJsonArray arr = object["winding"].toArray(); for (QJsonValueRef jsonObj : arr) { QJsonObject node = jsonObj.toObject(); int id = node["id"].toInt(); QString sTr = node["transformationRatio"].toString(); QString sAr = node["accuracyClass"].toString(); QString sSlc = node["secondaryLoadCapacity"].toString(); QString sWin = node["windingConnectionMethod"].toString(); addTableRow(sTr,sAr,sSlc,sWin,id); } } } } void PtExtraInfoDlg::onAddClicked() { QString sTr = ui->le_tr_pt->text(); QString sAr = ui->le_ac_pt->text(); QString sSlc = ui->le_slc_pt->text(); QString sWinding = ui->cb_wcm->currentText(); addTableRow(sTr,sAr,sSlc,sWinding); } void PtExtraInfoDlg::onDeleteClicked() { QPushButton *btn = qobject_cast(sender()); if (btn) { // 获取按钮在表格中的位置 QModelIndex index = ui->tb_pt->indexAt(btn->pos()); if (index.isValid()) { QTableWidgetItem* pFirstItem = ui->tb_pt->item(index.row(),0); int id = pFirstItem->data(Qt::UserRole).toInt(); _mapPT.remove(QString::number(id)); ui->tb_pt->removeRow(index.row()); } } } void PtExtraInfoDlg::addTableRow(QString sTr,QString sAr,QString sSlc,QString sWinding,int id) { if(_mapPT.contains(QString::number(id))) { return; } PtExtraInfo info; if(id == -1){ //缺省id时新建,否则加载 info.id = _count; _count += 1; } else{ info.id = id; } int row = ui->tb_pt->rowCount(); ui->tb_pt->insertRow(row); // 变比(输入框) QTableWidgetItem *item = new QTableWidgetItem(sTr); item->setData(Qt::UserRole,info.id); ui->tb_pt->setItem(row, 0, item); // 精度等级(下拉框) ui->tb_pt->setItem(row, 1, new QTableWidgetItem(sAr)); // 二次负载容量(输入框) ui->tb_pt->setItem(row, 2, new QTableWidgetItem(sSlc)); // 绕组接法(下拉框) ui->tb_pt->setItem(row, 3, new QTableWidgetItem(sWinding)); // 删除按钮 QPushButton *deleteBtn = new QPushButton("删除"); connect(deleteBtn, &QPushButton::clicked, this, &PtExtraInfoDlg::onDeleteClicked); ui->tb_pt->setCellWidget(row, 4, deleteBtn); info.transRatio = sTr; info.accuracyClass = sAr; info.secondaryLoadCapacity = sSlc; info.windingConnectionMethod = sWinding; _mapPT.insert(QString::number(info.id),info); }