You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWTAI-Platform/Src/nmNum/nmSubWxs/nmWxWellboreStorageCalculat...

274 lines
14 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#include "nmWxWellboreStorageCalculatorTubingData.h"
#include <QTableWidget>
#include <QPushButton>
#include <QLabel>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QHeaderView>
#include <QComboBox>
#include <QMessageBox>
nmWxWellboreStorageCalculatorTubingData::nmWxWellboreStorageCalculatorTubingData(QWidget *parent) : iDlgBase(parent)
{
this->initUI();
this->initConnections();
this->setupTableData();
}
nmWxWellboreStorageCalculatorTubingData::~nmWxWellboreStorageCalculatorTubingData()
{
}
double nmWxWellboreStorageCalculatorTubingData::getSelectedTubingID() const
{
int nSelectedRow = m_pTableWidget->currentRow();
if (nSelectedRow > 0) {
QTableWidgetItem* item = m_pTableWidget->item(nSelectedRow, 2);
if (item) {
bool ok;
double ID = item->text().toDouble(&ok);
if (ok) {
return ID;
}
}
}
return -1.0; // 返回一个无效值,表示获取失败
}
void nmWxWellboreStorageCalculatorTubingData::initUI()
{
setWindowTitle(tr("Tubing geometry data"));
setFixedSize(480, 450);
QVBoxLayout* mainLayout = new QVBoxLayout(this);
// 1. 顶部指令标签
m_pInstructionLabel = new QLabel(tr("Select a line to set tubing ID/OD values"));
mainLayout->addWidget(m_pInstructionLabel);
// 2. 表格区域
m_pTableWidget = new QTableWidget(this);
m_pTableWidget->setColumnCount(3);
m_pTableWidget->setHorizontalHeaderLabels(QStringList() << tr("Tubing OD") << tr("Weight") << tr("Tubing ID"));
// 设置一个自定义表头,其中第一行是单位
m_pTableWidget->insertRow(0);
// 为第一行的垂直表头(行号)创建一个 QTableWidgetItem 并设置为空文本
m_pTableWidget->setVerticalHeaderItem(0, new QTableWidgetItem());
m_pTableWidget->verticalHeaderItem(0)->setText("");
// 设置下拉框样式表,去除边框和箭头
QString comboStyle = "QComboBox {"
"border: 0px solid transparent;"
"background-color: transparent;"
"}"
"QComboBox::drop-down {"
"border: 0px;"
"background-color: transparent;"
"}"
"QComboBox::down-arrow {"
"image: url(none);"
"}"
"QComboBox:!editable, QComboBox::drop-down:editable {"
"background-color: transparent;"
"}";
// 设置第一行的单位
m_pODUnitCombo = new QComboBox;
m_pIDUnitCombo = new QComboBox;
m_pODUnitCombo->addItems(QStringList() << "m");
m_pIDUnitCombo->addItems(QStringList() << "m");
m_pODUnitCombo->setStyleSheet(comboStyle);
m_pIDUnitCombo->setStyleSheet(comboStyle);
m_pTableWidget->setCellWidget(0, 0, m_pODUnitCombo);
m_pTableWidget->setItem(0, 1, new QTableWidgetItem("-")); // Weight没有单位
m_pTableWidget->setCellWidget(0, 2, m_pIDUnitCombo);
m_pTableWidget->item(0, 1)->setFlags(m_pTableWidget->item(0, 1)->flags() & ~Qt::ItemIsEditable); // 设置为不可编辑
// 设置列宽策略
m_pTableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
m_pTableWidget->verticalHeader()->setResizeMode(QHeaderView::ResizeToContents);
m_pTableWidget->verticalHeader()->show();
m_pTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
m_pTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); // 表格内容不可编辑
mainLayout->addWidget(m_pTableWidget);
// 3. 底部按钮
QHBoxLayout* bottomButtonsLayout = new QHBoxLayout;
m_pOkButton = new QPushButton(tr("OK"));
m_pCancelButton = new QPushButton(tr("Cancel"));
bottomButtonsLayout->addStretch();
bottomButtonsLayout->addWidget(m_pOkButton);
bottomButtonsLayout->addWidget(m_pCancelButton);
mainLayout->addLayout(bottomButtonsLayout);
}
void nmWxWellboreStorageCalculatorTubingData::initConnections()
{
connect(m_pOkButton, SIGNAL(clicked()), this, SLOT(accept()));
connect(m_pCancelButton, SIGNAL(clicked()), this, SLOT(reject()));
// 双击表格行可以自动选择并关闭对话框
connect(m_pTableWidget, SIGNAL(cellDoubleClicked(int, int)), this, SLOT(accept()));
}
void nmWxWellboreStorageCalculatorTubingData::setupTableData()
{
// 清空现有数据
m_listTubingData.clear();
// 填充前14行数据
m_listTubingData << (QVariantList() << 0.02667 << 1.78580 << 0.020828);
m_listTubingData << (QVariantList() << 0.033274 << 2.67870 << 0.02667);
m_listTubingData << (QVariantList() << 0.042164 << 3.57159 << 0.035052);
m_listTubingData << (QVariantList() << 0.04826 << 4.31568 << 0.040894);
m_listTubingData << (QVariantList() << 0.060452 << 6.99437 << 0.0508);
m_listTubingData << (QVariantList() << 0.060452 << 8.85458 << 0.047498);
m_listTubingData << (QVariantList() << 0.072898 << 9.67307 << 0.061976);
m_listTubingData << (QVariantList() << 0.072898 << 12.9470 << 0.057404);
m_listTubingData << (QVariantList() << 0.0889 << 13.8399 << 0.075946);
m_listTubingData << (QVariantList() << 0.0889 << 19.2717 << 0.06985);
m_listTubingData << (QVariantList() << 0.1016 << 16.3698 << 0.088392);
m_listTubingData << (QVariantList() << 0.1143 << 14.1376 << 0.103886);
m_listTubingData << (QVariantList() << 0.1143 << 15.6257 << 0.10287);
m_listTubingData << (QVariantList() << 0.1143 << 17.2627 << 0.1016);
m_listTubingData << (QVariantList() << 0.1143 << 18.9741 << 0.100584);
m_listTubingData << (QVariantList() << 0.1143 << 20.0902 << 0.099568);
m_listTubingData << (QVariantList() << 0.1143 << 22.4713 << 0.097282);
m_listTubingData << (QVariantList() << 0.12065 << 23.8106 << 0.103632);
m_listTubingData << (QVariantList() << 0.127 << 17.1139 << 0.115824);
m_listTubingData << (QVariantList() << 0.127 << 19.3461 << 0.114046);
m_listTubingData << (QVariantList() << 0.127 << 22.3225 << 0.112014);
m_listTubingData << (QVariantList() << 0.127 << 26.3405 << 0.10922);
m_listTubingData << (QVariantList() << 0.127 << 26.7870 << 0.108712);
m_listTubingData << (QVariantList() << 0.127 << 31.2514 << 0.10541);
m_listTubingData << (QVariantList() << 0.1397 << 19.3461 << 0.128016);
m_listTubingData << (QVariantList() << 0.1397 << 20.8343 << 0.127254);
m_listTubingData << (QVariantList() << 0.1397 << 22.3225 << 0.126238);
m_listTubingData << (QVariantList() << 0.1397 << 23.0665 << 0.12573);
m_listTubingData << (QVariantList() << 0.1397 << 25.2988 << 0.124206);// 第29行
m_listTubingData << (QVariantList() << 0.1397 << 29.7633 << 0.121412);
m_listTubingData << (QVariantList() << 0.1397 << 34.2278 << 0.118618);
m_listTubingData << (QVariantList() << 0.14605 << 20.8343 << 0.134366);
m_listTubingData << (QVariantList() << 0.14605 << 25.2988 << 0.131826);
m_listTubingData << (QVariantList() << 0.14605 << 26.0429 << 0.129286);
m_listTubingData << (QVariantList() << 0.14605 << 29.0192 << 0.126746);
m_listTubingData << (QVariantList() << 0.1524 << 22.3225 << 0.144272);
m_listTubingData << (QVariantList() << 0.1524 << 23.8106 << 0.1397);
m_listTubingData << (QVariantList() << 0.1524 << 26.7870 << 0.137922);
m_listTubingData << (QVariantList() << 0.1524 << 29.7633 << 0.13589);
m_listTubingData << (QVariantList() << 0.1524 << 34.2278 << 0.133096);
m_listTubingData << (QVariantList() << 0.168275 << 25.2988 << 0.155702);
m_listTubingData << (QVariantList() << 0.168275 << 29.7633 << 0.15367);
m_listTubingData << (QVariantList() << 0.168275 << 32.7396 << 0.152146);
m_listTubingData << (QVariantList() << 0.168275 << 35.7159 << 0.150368); // 第44行
m_listTubingData << (QVariantList() << 0.168275 << 38.6923 << 0.14859);
m_listTubingData << (QVariantList() << 0.168275 << 39.8828 << 0.148336);
m_listTubingData << (QVariantList() << 0.168275 << 41.6537 << 0.147066);
m_listTubingData << (QVariantList() << 0.168275 << 43.1568 << 0.146304);
m_listTubingData << (QVariantList() << 0.168275 << 47.6212 << 0.144018);
m_listTubingData << (QVariantList() << 0.1778 << 25.2988 << 0.166116);
m_listTubingData << (QVariantList() << 0.1778 << 29.7633 << 0.164084);
m_listTubingData << (QVariantList() << 0.1778 << 32.7396 << 0.16256);
m_listTubingData << (QVariantList() << 0.1778 << 34.2278 << 0.161798);
m_listTubingData << (QVariantList() << 0.1778 << 35.7159 << 0.160782);
m_listTubingData << (QVariantList() << 0.1778 << 38.6923 << 0.159512);
m_listTubingData << (QVariantList() << 0.1778 << 41.6686 << 0.157734);
m_listTubingData << (QVariantList() << 0.1778 << 43.1568 << 0.157226);
m_listTubingData << (QVariantList() << 0.1778 << 44.6449 << 0.15621);
m_listTubingData << (QVariantList() << 0.1778 << 47.6212 << 0.154686); // 第59行
m_listTubingData << (QVariantList() << 0.1778 << 52.0857 << 0.1524);
m_listTubingData << (QVariantList() << 0.1778 << 56.5502 << 0.150368);
m_listTubingData << (QVariantList() << 0.1778 << 59.5266 << 0.148082);
m_listTubingData << (QVariantList() << 0.193675 << 29.7633 << 0.181102);
m_listTubingData << (QVariantList() << 0.193675 << 35.7159 << 0.178308);
m_listTubingData << (QVariantList() << 0.193675 << 39.2875 << 0.177038);
m_listTubingData << (QVariantList() << 0.193675 << 44.1985 << 0.174498);
m_listTubingData << (QVariantList() << 0.193675 << 50.1511 << 0.171704);
m_listTubingData << (QVariantList() << 0.193675 << 59.0384 << 0.168402);
m_listTubingData << (QVariantList() << 0.219075 << 35.7159 << 0.20574);
m_listTubingData << (QVariantList() << 0.219075 << 41.6686 << 0.203708);
m_listTubingData << (QVariantList() << 0.219075 << 47.6212 << 0.201168);
m_listTubingData << (QVariantList() << 0.219075 << 53.5739 << 0.198882);
m_listTubingData << (QVariantList() << 0.219075 << 56.5502 << 0.197612);
m_listTubingData << (QVariantList() << 0.219075 << 59.5266 << 0.196088); // 第74行
m_listTubingData << (QVariantList() << 0.219075 << 64.0059 << 0.19431);
m_listTubingData << (QVariantList() << 0.219075 << 65.4792 << 0.193802);
m_listTubingData << (QVariantList() << 0.219075 << 72.9200 << 0.190754);
m_listTubingData << (QVariantList() << 0.2286 << 50.5976 << 0.210566);
m_listTubingData << (QVariantList() << 0.2286 << 56.5502 << 0.20828);
m_listTubingData << (QVariantList() << 0.2286 << 59.5266 << 0.20701);
m_listTubingData << (QVariantList() << 0.2286 << 66.9674 << 0.203962);
m_listTubingData << (QVariantList() << 0.2286 << 81.8490 << 0.198374);
m_listTubingData << (QVariantList() << 0.244475 << 43.6032 << 0.230124);
m_listTubingData << (QVariantList() << 0.244475 << 48.0677 << 0.2286);
m_listTubingData << (QVariantList() << 0.244475 << 53.5739 << 0.226568);
m_listTubingData << (QVariantList() << 0.244475 << 59.5266 << 0.224282);
m_listTubingData << (QVariantList() << 0.244475 << 64.7351 << 0.222504);
m_listTubingData << (QVariantList() << 0.244475 << 69.9437 << 0.220472);
m_listTubingData << (QVariantList() << 0.244475 << 79.6168 << 0.216916); // 第89行
m_listTubingData << (QVariantList() << 0.254 << 49.1094 << 0.238506);
m_listTubingData << (QVariantList() << 0.27305 << 48.7374 << 0.258826);
m_listTubingData << (QVariantList() << 0.27305 << 59.5266 << 0.255524);
m_listTubingData << (QVariantList() << 0.27305 << 60.2706 << 0.25527);
m_listTubingData << (QVariantList() << 0.27305 << 66.9674 << 0.252984);
m_listTubingData << (QVariantList() << 0.27305 << 67.7115 << 0.25273);
m_listTubingData << (QVariantList() << 0.27305 << 71.4319 << 0.25146);
m_listTubingData << (QVariantList() << 0.27305 << 75.8964 << 0.25019);
m_listTubingData << (QVariantList() << 0.27305 << 80.3609 << 0.248412);
m_listTubingData << (QVariantList() << 0.27305 << 82.5931 << 0.247904);
m_listTubingData << (QVariantList() << 0.27305 << 90.3316 << 0.245364);
m_listTubingData << (QVariantList() << 0.27305 << 97.7724 << 0.242824);
m_listTubingData << (QVariantList() << 0.29845 << 56.5502 << 0.28321);
m_listTubingData << (QVariantList() << 0.29845 << 62.5029 << 0.281432);
m_listTubingData << (QVariantList() << 0.29845 << 69.9437 << 0.2794); // 第104行
m_listTubingData << (QVariantList() << 0.29845 << 80.3609 << 0.276352);
m_listTubingData << (QVariantList() << 0.29845 << 89.2898 << 0.273558);
m_listTubingData << (QVariantList() << 0.3048 << 59.5266 << 0.289306);
m_listTubingData << (QVariantList() << 0.3302 << 59.5266 << 0.315976);
m_listTubingData << (QVariantList() << 0.339725 << 71.4319 << 0.323088);
m_listTubingData << (QVariantList() << 0.339725 << 81.1049 << 0.320294);
m_listTubingData << (QVariantList() << 0.339725 << 90.7780 << 0.318008);
m_listTubingData << (QVariantList() << 0.339725 << 101.195 << 0.315214);
m_listTubingData << (QVariantList() << 0.339725 << 107.148 << 0.31369);
m_listTubingData << (QVariantList() << 0.4064 << 81.8490 << 0.390652);
m_listTubingData << (QVariantList() << 0.4064 << 96.7307 << 0.38735);
m_listTubingData << (QVariantList() << 0.4064 << 111.612 << 0.384302);
m_listTubingData << (QVariantList() << 0.4064 << 125.006 << 0.381254);
m_listTubingData << (QVariantList() << 0.473075 << 116.077 << 0.45339);
m_listTubingData << (QVariantList() << 0.508 << 133.935 << 0.487426); // 第119行
m_listTubingData << (QVariantList() << 0.508 << 139.887 << 0.485902);
m_listTubingData << (QVariantList() << 0.5461 << 137.655 << 0.526034);
m_listTubingData << (QVariantList() << 0.5461 << 153.281 << 0.523494);
m_listTubingData << (QVariantList() << 0.5461 << 169.651 << 0.520954);
m_listTubingData << (QVariantList() << 0.6223 << 149.560 << 0.60325);
m_listTubingData << (QVariantList() << 0.6223 << 168.163 << 0.60071); // 第125行
m_pTableWidget->setRowCount(m_listTubingData.size() + 1); // +1 是为了第一行的单位
for (int i = 0; i < m_listTubingData.size(); ++i) {
int rowIndex = i + 1;
// 设置行号从1开始
m_pTableWidget->setVerticalHeaderItem(rowIndex, new QTableWidgetItem(QString::number(rowIndex)));
// 填充数据
m_pTableWidget->setItem(rowIndex, 0, new QTableWidgetItem(QString::number(m_listTubingData[i][0].toDouble(), 'f', 6)));
m_pTableWidget->setItem(rowIndex, 1, new QTableWidgetItem(QString::number(m_listTubingData[i][1].toDouble(), 'f', 6)));
m_pTableWidget->setItem(rowIndex, 2, new QTableWidgetItem(QString::number(m_listTubingData[i][2].toDouble(), 'f', 6)));
}
}