#include "ExtremumDialog.h" #include "ui_ExtremumDialog.h" #include "FITK_Kernel/FITKAppFramework/FITKAppFramework.h" #include "FITK_Kernel/FITKAppFramework/FITKGlobalData.h" #include "FITK_Interface/FITKInterfaceCFDPost/FITKAbstractCFDPostData.h" #include "FITK_Interface/FITKInterfaceCFDPost/FITKCFDPost3DManager.h" Q_DECLARE_METATYPE(Interface::FITKPostFieldType) namespace GUI { ExtremumDialog::ExtremumDialog(int dataID, EventOper::ParaWidgetInterfaceOperator * oper) : GUIDialogBase(oper,"ExtremumDialog", FITKAPP->getGlobalData()->getMainWindow()), _currentDataID(dataID) { _ui = new Ui::ExtremumDialog(); _ui->setupUi(this); init(); setWindowTitle(tr("Extremum Dialog")); } ExtremumDialog::~ExtremumDialog() { if (_ui) { delete _ui; _ui = nullptr; } } void ExtremumDialog::init() { Interface::FITKAbstractCFDPostData* currentData = _postDataManager->getDataByID(_currentDataID); if (currentData == nullptr)return; _ui->tableWidget->setColumnCount(1); QStringList header; header << tr(""); _ui->tableWidget->setHorizontalHeaderLabels(header); _ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); //设置tableWidget的item不可编辑 _ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); //充满表格 _ui->tableWidget->horizontalHeader()->setStretchLastSection(true); //隐藏列表头 _ui->tableWidget->horizontalHeader()->setVisible(false); //设置名称 QString name = currentData->getDataObjectName(); _ui->lineEdit_Name->setText(name); _ui->lineEdit_Name->setEnabled(false); //设置场量 QStringList pointData = currentData->getPointDataArray(); for (auto array : pointData) { Interface::FITKPostVariableType variableType = currentData->getVariableType(Interface::FITKPostFieldType::Post_Point, array); if (variableType != Interface::FITKPostVariableType::Post_Scalar)continue; _ui->comboBox_Field->addItem(QIcon("://icons/nodeValue.png"), array, QVariant::fromValue(Interface::FITKPostFieldType::Post_Point)); } QStringList cellData = currentData->getCellDataArray(); for (auto array : cellData) { Interface::FITKPostVariableType variableType = currentData->getVariableType(Interface::FITKPostFieldType::Post_Cell, array); if (variableType != Interface::FITKPostVariableType::Post_Scalar)continue; _ui->comboBox_Field->addItem(QIcon("://icons/cellValue.png"), array, QVariant::fromValue(Interface::FITKPostFieldType::Post_Cell)); } if (!pointData[0].isEmpty()) { updateWidget(pointData[0], Interface::FITKPostFieldType::Post_Point); } else if (!cellData[0].isEmpty()) { updateWidget(cellData[0], Interface::FITKPostFieldType::Post_Cell); } } void ExtremumDialog::updateWidget(QString fieldName, Interface::FITKPostFieldType fieldType) { _ui->tableWidget->clear(); Interface::FITKAbstractCFDPostData* currentData = _postDataManager->getDataByID(_currentDataID); if (currentData == nullptr)return; _ui->tableWidget->setRowCount(4); QStringList header; header << tr("Max Value") << tr("Min Value") << tr("Max Point") << tr("Min Point"); _ui->tableWidget->setVerticalHeaderLabels(header); double range[2] = { 0,0 }, point[6] = { 0,0,0,0,0,0 }; currentData->getExtremum(range, point, fieldType, fieldName); QString maxValue = QString::number(range[1]); QTableWidgetItem* item = new QTableWidgetItem(maxValue); _ui->tableWidget->setItem(0, 0, item); QString minValue = QString::number(range[0]); item = new QTableWidgetItem(minValue); _ui->tableWidget->setItem(1, 0, item); QString maxPoint = QString("(%1 , %2 , %3)").arg(point[1]).arg(point[3]).arg(point[5]); item = new QTableWidgetItem(maxPoint); _ui->tableWidget->setItem(2, 0, item); QString minPoint = QString("(%1 , %2 , %3)").arg(point[0]).arg(point[2]).arg(point[4]); item = new QTableWidgetItem(minPoint); _ui->tableWidget->setItem(3, 0, item); } void ExtremumDialog::on_comboBox_Field_currentIndexChanged(int index) { Q_UNUSED(index); QString fieldName = _ui->comboBox_Field->currentText(); Interface::FITKPostFieldType fieldType = _ui->comboBox_Field->currentData().value(); updateWidget(fieldName, fieldType); } }