#include "nmWxWellboreStorageCalculatorTubingData.h" #include #include #include #include #include #include #include #include nmWxWellboreStorageCalculatorTubingData::nmWxWellboreStorageCalculatorTubingData(QWidget *parent) : QDialog(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))); } }