#pragma once #include #include #include "IxPtyPano.h" #include "iProperty_global.h" class ZxXpfNode; class ZxPtyPano; class ZxPtyAttributeFile; class IxPtyItemEditor; // 属性项 class I_PROPERTY_EXPORT ZxPtyItem : virtual public IxPtyItem { public: ZxPtyItem(ZxPtyPano* pSheet); ~ZxPtyItem(); public: // 创建具体的组件 IxPtyItemEditor* tryCreateEditor(const QString& sPtyTag); // 配置设定 void setConfig(ZxXpfNode* p, bool isInit); void loadInitConfig(); ZxXpfNode* getItemNodeBy(ZxXpfNode* config, \ QString sItemTag, \ bool bCaseInsensitive = true) const; QString getItemAttributeBy(ZxXpfNode* config, \ QString sItemTag, \ bool bCaseInsensitive = true) const; // 对应文件 ZxPtyAttributeFile* getAttributeFile() const; // 载体 virtual IxPtyPano* getPtyPano() const; // 父级属性项 virtual IxPtyItem* getParent() const; // 父级属性项:名称 QString getParentConfigName(ZxXpfNode* config) const; QString macrosExpanded(const QString& s) const; //宏模式处理 // 是否分组 virtual bool isGroup() const; // 取值范围 virtual void setLimit(int nMin, int nMax); virtual void setLimit(double fMin, double fMax); // 对于下拉类型的设定 virtual void setOptions(const QStringList& listName, const QList& listValue); virtual void setOptions(const QStringList& listName, const QStringList& listValue); virtual void setOptions(const QStringList& listName, const QList& listValue); // 当前标识 QString getLabel(); // 当前值 virtual QVariant getValue() const; virtual void setValue(const QVariant& v, IxInterface* pSetBy = NULL); void onValueChanged(const QVariant& v); // 键值 const QString& getKey() const; QString getFullKey() const; QString getParam(int index) const; // 排序 static bool displayOrder(const ZxPtyItem* a, const ZxPtyItem* b); // 系列属性 // 可见 virtual bool isVisible() const; virtual void setVisible(bool bVisible); int getVisibleRows(); bool isHideByCollapse(); bool isVirtualVisible(); // 只读 virtual bool isReadOnly() const; virtual void setReadOnly(bool bReadOnly); // 展开 virtual void setExpand(bool bExpand); // 激活条目 virtual void activate(); // 高度 virtual void setHeight(int height); virtual int getHeight() const; // 该行 底及高度 int getRowBottom() const; int getRowHeight() const; // 双击响应 void onDoubleCliked(int n); // 窗体 QWidget* getOwnerWidget(); QWidget* getItemWidget(); public: int m_nIndexReal; //实际的行号 int m_nIndexVirtual; //显示在第几行, 有条目展开/折叠时, 这个值可能会变 int m_nOrder; //显示顺序 int m_nOffsetY; //当前显示位置, Y坐标 int m_nCurCellHeight; //当前条目的高度 int m_nItemIndent; //缩进 bool m_bExpanded; //是否展开,对于group而言 bool m_bHidden; //是否隐藏 bool m_bActive; //是否激活 bool m_bReadonly; //是否只读 bool m_bHasMacros; //宏定义模式 QString m_sItemLabel; //显示的标签 QString m_sItemTips; QVariant m_oItemValue; //当前值 ZxPtyPano* sheet; //所属的属性表 IxPtyItemEditor* m_pPtyItemEditor; //所属的属性控件 QStringList m_listParams; //key is at front, ie m_listParams[0] QList handlers; //回调, 往对象回传新值 ZxPtyItem* parent; //父条目 QVector children; //子条目 // 其它常量 int m_nCELL_HEIGHT; int m_nCellSpacing; };