diff --git a/Include/nmNum/nmSubWxs/nmReservoirParameterField.h b/Include/nmNum/nmSubWxs/nmReservoirParameterField.h index d1d67a2..7669d9f 100644 --- a/Include/nmNum/nmSubWxs/nmReservoirParameterField.h +++ b/Include/nmNum/nmSubWxs/nmReservoirParameterField.h @@ -3,6 +3,7 @@ #include "nmSubWxs_global.h" #include "nmReservoirParameterCatalog.h" +#include #include #include @@ -157,6 +158,7 @@ private: QComboBox* m_pValueComboBox; ///< 枚举值下拉框。 QComboBox* m_pUnitComboBox; ///< 可换算单位下拉框。 QLabel* m_pUnitLabel; ///< 无单位字段的空白对齐占位。 + QColor m_clrNormalText; ///< 输入框默认文字颜色。 bool m_bVisible; ///< 参数行是否参与编辑。 bool m_bUpdating; ///< 程序写值时阻止业务信号。 }; diff --git a/Src/nmNum/nmSubWxs/nmReservoirParameterField.cpp b/Src/nmNum/nmSubWxs/nmReservoirParameterField.cpp index 6e80ce8..e82e0ba 100644 --- a/Src/nmNum/nmSubWxs/nmReservoirParameterField.cpp +++ b/Src/nmNum/nmSubWxs/nmReservoirParameterField.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include namespace @@ -31,6 +32,24 @@ QString fieldText(const char* pText) "nmReservoirParameterField", pText); } +/** @brief 根据有效状态生成悬浮提示文字。 */ +QString validationToolTip(const QString& sText, bool bValid) +{ + if (bValid) + { + return sText; + } + + QString sEscaped = sText; + sEscaped.replace("&", "&"); + sEscaped.replace("<", "<"); + sEscaped.replace(">", ">"); + sEscaped.replace("\"", """); + sEscaped.replace("\n", "
"); + return "" + + sEscaped + ""; +} + } nmReservoirParameterField::nmReservoirParameterField( @@ -46,6 +65,7 @@ nmReservoirParameterField::nmReservoirParameterField( m_pValueComboBox(nullptr), m_pUnitComboBox(nullptr), m_pUnitLabel(nullptr), + m_clrNormalText(), m_bVisible(true), m_bUpdating(false) { @@ -149,6 +169,7 @@ bool nmReservoirParameterField::createNumericEditor( QSizePolicy::Fixed); m_pLineEdit = new QLineEdit(pParentWidget); + m_clrNormalText = m_pLineEdit->palette().color(QPalette::Text); m_pLineEdit->setAlignment(Qt::AlignLeft | Qt::AlignVCenter); m_pLineEdit->setFixedHeight(editorHeight()); m_pLineEdit->setMinimumWidth(editorMinimumWidth()); @@ -399,12 +420,17 @@ QString nmReservoirParameterField::formatBaseValue(double dValue) const void nmReservoirParameterField::updateValidationAppearance(bool bValid) { - Q_UNUSED(bValid); if (m_pLineEdit == nullptr || m_pParameter == nullptr) { return; } + // 只修改文字色,避免Qt 4.8样式表绘制覆盖原生输入框边框。 + QPalette oPalette = m_pLineEdit->palette(); + oPalette.setColor(QPalette::Text, + bValid ? m_clrNormalText : QColor(Qt::red)); + m_pLineEdit->setPalette(oPalette); + QString sCurrentUnit; iUnitGroup* pUnitGroup = nullptr; if (m_pUnitComboBox != nullptr && m_pUnitService != nullptr) @@ -414,7 +440,19 @@ void nmReservoirParameterField::updateValidationAppearance(bool bValid) } QString sRange = iParaItemCtrl::getScaleStrOf( m_pParameter, sCurrentUnit, pUnitGroup); - QString sHelp = m_pParameter->m_sDesc; + // 参数别名来自当前语言XML,稳定ID便于定位参数定义。 + QString sHelp = m_pParameter->m_sAlias; + if (!m_pParameter->m_sName.isEmpty()) + { + if (!sHelp.isEmpty()) + { + sHelp += "[" + m_pParameter->m_sName + "]"; + } + else + { + sHelp = m_pParameter->m_sName; + } + } if (!sRange.isEmpty()) { if (!sHelp.isEmpty()) @@ -423,7 +461,7 @@ void nmReservoirParameterField::updateValidationAppearance(bool bValid) } sHelp += sRange; } - m_pLineEdit->setToolTip(sHelp); + m_pLineEdit->setToolTip(validationToolTip(sHelp, bValid)); m_pLineEdit->setWhatsThis(sHelp); if (m_pLabel != nullptr) {