From 226b942bbf0241a10323083a7e9ee56eea60805a Mon Sep 17 00:00:00 2001 From: lh <2334563547@qq.com> Date: Fri, 14 Aug 2026 14:46:36 +0800 Subject: [PATCH] =?UTF-8?q?refactor(nmNum):=20=E4=BC=98=E5=8C=96=E5=82=A8?= =?UTF-8?q?=E5=B1=82=E5=8F=82=E6=95=B0=E5=AF=B9=E8=B1=A1=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 使用原生分组框承载对象切换下拉框 - 统一对象显示标签并移除重复页面标题 - 保持原有切换、校验和提交逻辑不变 --- Bin/Config/Lang/cn/nmNum_cn.qm | Bin 113262 -> 112435 bytes Bin/Config/Lang/cn/nmNum_cn.ts | 14 +-- .../nmNum/nmSubWxs/nmReservoirParameterPage.h | 13 +-- .../nmSubWxs/nmReservoirParameterPage.cpp | 85 +++++------------- 4 files changed, 26 insertions(+), 86 deletions(-) diff --git a/Bin/Config/Lang/cn/nmNum_cn.qm b/Bin/Config/Lang/cn/nmNum_cn.qm index 3092a7f82694ec20f4b0c0073dd0dd867a5ee791..fb8dbc0f9b5d0d6bc3593263aea801d6324fc8e3 100644 GIT binary patch delta 9836 zcmX|{d0dR^`^T?)o@Lf%6pD~NN%kTUhl+|qWEU!tog!J9ibTbcA!R4o_k9-?LWOME zNyonL$HDJ2bAMmIKfK=0{q)Stynw15K%v(avd!oshgqcsHINx2fkWoCRkj1Gy%4u_pvsx@??FF1}!JNK-ID3X#IGBxo z!Ea2O${F{Gb8ZM{vNdPQ3a}^9G7aYu^A})z$vhD}`_w$K5k$q<6Dfk&s4&wP=4kBU zgW*MDJ+Ps&9X1_*mp>BS#p6m>q6f}IE%n4C15vk)#C#(-XJb0%@q)@kzAm_*$vJuk zxQiH@&ne+>&12PZ⪻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 nmReservoirParameterPage - Reservoir parameters储层参数 - Well parameters井参数 - Fault parameters断层参数 - Fracture parameters裂缝参数 - Composite region parameters复合区参数 - Region mark parameters区域标记参数 - Select well:选择井: - Select fault:选择断层: - Select fracture:选择裂缝: - Select composite region:选择复合区: - Select region mark:选择区域标记: - Select object:选择对象: + Object display对象显示 + Display:显示: No editable objects in this category.此分类中没有可编辑对象。 diff --git a/Include/nmNum/nmSubWxs/nmReservoirParameterPage.h b/Include/nmNum/nmSubWxs/nmReservoirParameterPage.h index 10b80f8..db3cc1e 100644 --- a/Include/nmNum/nmSubWxs/nmReservoirParameterPage.h +++ b/Include/nmNum/nmSubWxs/nmReservoirParameterPage.h @@ -12,6 +12,7 @@ class nmReservoirParameterField; class nmReservoirPropertiesSession; class QComboBox; class QGridLayout; +class QGroupBox; class QLabel; class QVBoxLayout; @@ -76,15 +77,9 @@ private slots: void slotEnumIndexChanged(int nIndex); private: - /** @brief 创建页标题、对象选择器和单层分组区域。 */ + /** @brief 创建对象显示控制区和单层参数分组区域。 */ void createUi(); - /** @brief 根据当前分类返回标题。 */ - QString categoryTitle() const; - - /** @brief 根据当前分类返回对象选择标签。 */ - QString objectSelectorLabel() const; - /** @brief 构建指定对象的全部分组和字段。 */ bool buildObject(int nObjectIndex, QString& sError); @@ -115,8 +110,8 @@ private: bool m_bUpdatingObject; ///< 阻止对象下拉框回滚重入。 bool m_bBuildingFields; ///< 阻止加载数据时触发业务信号。 - QLabel* m_pTitleLabel; ///< 页面标题。 - QLabel* m_pObjectLabel; ///< 对象选择标签。 + QGroupBox* m_pObjectDisplayGroup; ///< 对象显示控制分组。 + QLabel* m_pObjectLabel; ///< 对象显示标签。 QComboBox* m_pObjectComboBox; ///< 多对象选择下拉框。 QWidget* m_pGroupsWidget; ///< 无边框的分组布局载体。 QGridLayout* m_pGroupsLayout; ///< 两列分组布局。 diff --git a/Src/nmNum/nmSubWxs/nmReservoirParameterPage.cpp b/Src/nmNum/nmSubWxs/nmReservoirParameterPage.cpp index 51565fd..3a0f630 100644 --- a/Src/nmNum/nmSubWxs/nmReservoirParameterPage.cpp +++ b/Src/nmNum/nmSubWxs/nmReservoirParameterPage.cpp @@ -23,7 +23,7 @@ nmReservoirParameterPage::nmReservoirParameterPage( m_nCurrentObjectIndex(-1), m_bUpdatingObject(false), m_bBuildingFields(false), - m_pTitleLabel(nullptr), + m_pObjectDisplayGroup(nullptr), m_pObjectLabel(nullptr), m_pObjectComboBox(nullptr), m_pGroupsWidget(nullptr), @@ -45,35 +45,31 @@ nmReservoirParameterPage::~nmReservoirParameterPage() void nmReservoirParameterPage::createUi() { - // 第一步:创建原型中的单层内容头,储层页自动隐藏对象选择器。 + // 第一步:创建单行对象显示控制区,储层页自动隐藏该分组。 m_pMainLayout = new QVBoxLayout(this); m_pMainLayout->setContentsMargins(8, 6, 8, 8); m_pMainLayout->setSpacing(8); - QWidget* pHeaderWidget = new QWidget(this); - QHBoxLayout* pHeaderLayout = new QHBoxLayout(pHeaderWidget); - pHeaderLayout->setContentsMargins(8, 4, 8, 4); - pHeaderLayout->setSpacing(9); + m_pObjectDisplayGroup = new QGroupBox(tr("Object display"), this); + m_pObjectDisplayGroup->setSizePolicy( + QSizePolicy::Expanding, QSizePolicy::Fixed); + QHBoxLayout* pObjectLayout = new QHBoxLayout(m_pObjectDisplayGroup); + pObjectLayout->setContentsMargins(8, 15, 8, 8); + pObjectLayout->setSpacing(9); - m_pTitleLabel = new QLabel(categoryTitle(), pHeaderWidget); - pHeaderLayout->addWidget(m_pTitleLabel, 1); - - m_pObjectLabel = new QLabel(objectSelectorLabel(), pHeaderWidget); - m_pObjectComboBox = new QComboBox(pHeaderWidget); + m_pObjectLabel = new QLabel(tr("Display:"), m_pObjectDisplayGroup); + m_pObjectLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter); + m_pObjectComboBox = new QComboBox(m_pObjectDisplayGroup); m_pObjectComboBox->setMinimumWidth(260); + m_pObjectComboBox->setMaximumWidth(420); m_pObjectComboBox->setMinimumHeight(27); - pHeaderLayout->addWidget(m_pObjectLabel); - pHeaderLayout->addWidget(m_pObjectComboBox); - // 储层页只有一个固定对象,顶部分类按钮已经说明当前页面, - // 不再重复显示无操作价值的页标题;其他页面保留对象选择区。 - if (m_eCategory == NM_RESERVOIR_PAGE_RESERVOIR) - { - pHeaderWidget->hide(); - } - else - { - m_pMainLayout->addWidget(pHeaderWidget); - } + pObjectLayout->addStretch(1); + pObjectLayout->addWidget(m_pObjectLabel); + pObjectLayout->addWidget(m_pObjectComboBox); + pObjectLayout->addStretch(1); + m_pMainLayout->addWidget(m_pObjectDisplayGroup); + m_pObjectDisplayGroup->setVisible( + m_eCategory != NM_RESERVOIR_PAGE_RESERVOIR); // 第二步:分组载体没有边框,仅用于实现原型中的两列网格。 m_pGroupsWidget = new QWidget(this); @@ -90,46 +86,6 @@ void nmReservoirParameterPage::createUi() this, SLOT(slotObjectChanged(int))); } -QString nmReservoirParameterPage::categoryTitle() const -{ - switch (m_eCategory) - { - case NM_RESERVOIR_PAGE_RESERVOIR: - return tr("Reservoir parameters"); - case NM_RESERVOIR_PAGE_WELL: - return tr("Well parameters"); - case NM_RESERVOIR_PAGE_FAULT: - return tr("Fault parameters"); - case NM_RESERVOIR_PAGE_FRACTURE: - return tr("Fracture parameters"); - case NM_RESERVOIR_PAGE_COMPOSITE_REGION: - return tr("Composite region parameters"); - case NM_RESERVOIR_PAGE_REGION_MARK: - return tr("Region mark parameters"); - default: - return QString(); - } -} - -QString nmReservoirParameterPage::objectSelectorLabel() const -{ - switch (m_eCategory) - { - case NM_RESERVOIR_PAGE_WELL: - return tr("Select well:"); - case NM_RESERVOIR_PAGE_FAULT: - return tr("Select fault:"); - case NM_RESERVOIR_PAGE_FRACTURE: - return tr("Select fracture:"); - case NM_RESERVOIR_PAGE_COMPOSITE_REGION: - return tr("Select composite region:"); - case NM_RESERVOIR_PAGE_REGION_MARK: - return tr("Select region mark:"); - default: - return tr("Select object:"); - } -} - bool nmReservoirParameterPage::reloadObjects(QString& sError) { // 第一步:重新取得会话对象描述,并把稳定对象code放入UserRole。 @@ -148,8 +104,7 @@ bool nmReservoirParameterPage::reloadObjects(QString& sError) m_bUpdatingObject = false; bool bShowSelector = m_eCategory != NM_RESERVOIR_PAGE_RESERVOIR; - m_pObjectLabel->setVisible(bShowSelector); - m_pObjectComboBox->setVisible(bShowSelector); + m_pObjectDisplayGroup->setVisible(bShowSelector); // 第二步:构建首个对象;空分类显示无额外面板的空状态。 return buildObject(m_listObjectInfos.isEmpty() ? -1 : 0, sError);