|
|
#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)));
|
|
|
}
|
|
|
}
|