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/Include/iGui/iGuiGridPty/iGridRowItemUnt.h

99 lines
3.0 KiB
C

#pragma once
#include "iGridRowItem.h"
class ZxComboBox;
class iUnitWxBinder;
// 对于有单位的生成,目前默认所有的均有单位,为了对齐
class X_GUI_GRIDPTY_EXPORT iGridRowItemUnt : public iGridRowItem
{
Q_OBJECT
public:
explicit iGridRowItemUnt(iGridRowItem* pParent = nullptr);
~iGridRowItemUnt();
virtual void setDlgBase(QWidget* p);
virtual void setParameter(iParameter* p);
// 控件
virtual void initEditor();
virtual void configEditor();
virtual void initOtherEditors();
virtual bool isInputOk();
virtual void setActive(bool b);
// 范围
virtual void setBounds(QRectF& rt);//全局
virtual QRectF getRightBounds_Main();//右
virtual QRectF getRightBounds_Unt(); // 单位以文本显示时的范围)
virtual QRectF getRightBounds_UntCbx();//单位以ComboBox显示时的范围
// 允许在外部调整参数,主要指的是产量单位,处理方/万方问题
// 该函数暂未启用(调试时用过)
virtual void setShowUnit(QString sUnit, QString sUnitRaw = "");
virtual QString getUnit(bool bUnitRaw = false);
virtual QVariant getInfoRight();
virtual QString getInfoUnit();
virtual bool setCurValue(QVariant o);
virtual QVariant getCurValue();
virtual QString getShowValue(); //非激活时显示在右侧的文本
protected slots:
void slotUnitChanged(QString s);
// QLineEdit 类型的数据change响应
virtual void slotItemValueChanged(QString s);
/// @brief 对于参数/单位绑定的情形,数据编辑,允许外部进行判断是否合理
/// @param sPara 具体哪个参数,英文标识
/// @param baseValue 基准数值,并非显示数值
/// @param bValid 是否有效的数值,返回值
virtual void slotValidateParaInput(const QString sPara, const double baseValue, bool& bValid);
protected:
// 绘图
virtual void paint(QPainter* pPainter);
// 显示单位文本信息
void _paintItemUnit(QPainter* pPainter, QString s);
// 原始的Painter drawText模式
// 该模式在Qt4下对于10^4m^3形式数字上标不正常字母上标还基本OK)
void _paintItemUnit_ByNormal(QPainter* pPainter, QString s, QRectF rt);
// TextDocument模式采用html模式
void _paintItemUnit_ByRich(QPainter* pPainter, QString s, QRectF rt);
// 格式化 10^4m^3 根据需要转为html
QString _formatToHtmlText(const QString& s, \
const bool bItalic, \
const QColor& clr, \
const int nFontSize);
protected:
ZxComboBox* m_pCbxUnits;
QStringList m_listUnitNames;
QStringList m_listUnitCodes; //对应的是ID
QString m_sCurUnit;
iUnitGroup* m_pUnitGroup; //只是缓存
bool m_bUnableSP; //临时变量
// 两变量暂未启用(调试时用过)
QString m_sUnit;
QString m_sUnitRaw; //20250704
iUnitWxBinder* m_pUnitBinder;
};