#pragma once #include "Common.h" #include "ui_WindowAppVariableTable.h" /// /// 用来处理变量显示和交互逻辑的表格 /// class WindowAppVariableTable : public QTableWidget { Q_OBJECT public: WindowAppVariableTable(QWidget *parent = Q_NULLPTR); ~WindowAppVariableTable(); public: // 初始化变量表格 void initTable(const QString& strGroup, GVL_MODE gvlMode = GVL_MODE::GVL_BASIC); // 按标准模式初始化变量表格Header void initStandardTableHeader(); // 按DB模式初始化变量表格Header void initDBTableHeader(); // 表格中添加新的一行(标准/普通模式) int insertTableLine( bool bSerialized, QString strName, QString strFullName, QString strType, QString strValue, QString strComment ); // 表格中添加新的一行(DB模式) int insertTableLine( QString strName, QString strFullName, QString strType, QString strValue, QString strCommAddress, VPEnum::GVL_ACCESS_MODE accessMode, QString strComment ); //// 添加全局变量(界面录入方式) //void addGlobalVariable( // bool bSerialized, // QString strName, // QString strType, // QString strValue, // QString strComment // ); //// 添加全局变量(序列化方式) //void addGlobalVariable( const VARIABLE& newVar); //// 添加局部变量 //void addLocalVariable( // bool bSerialized, // QString strName, // QString strType, // QString strValue, // QString strComment //); // 更新表格中指定变量的值 void updateTableValue(const QString& strVarFullName, const QString& strNewValue); //// 将指定的表格设置为错误状态 //void setItemError(int row, int col); //// 将指定的表格设置为正常状态 //void setItemOK(int row, int col); //// Toolbar - New //void onToolNew(); // Toolbar - MoveUp void onVariableMoveUp(); // Toolbar - MoveDown void onVariableMoveDown(); // Toolbar - Delete void onVariableDelete(); // 交换两行的数据 void swapRows(int selectRow, int targetRow); //// 设置分组名称 //void setTitle(const QString& strTitle) //{ // this->m_strTitle = strTitle; //} private slots: //// 当Type下拉框改变时 //void onTableTypeChanged(int nIndex); // 当Serialized状态发生改变时 void onTableSerializedChanged(bool bChecked); // 当表格单元改变时 void onTableCellChanged(int row, int col); // 调整大小的消息中改变表格栏的宽度 virtual void resizeEvent(QResizeEvent* event) override; private: Ui::WindowAppVariableTable ui; //private: // // // 表格中添加一行 // void addNewLine( // bool bSerialized, // QString strName, // QString strType, // QString strValue, // QString strComment, // TOOL_TYPE varType // ); private: // 用来保存表格中插入的控件及其对应的序号,否则获取不到 QHash m_cellCheckbox; // 上一次输入的Value值和Comment值(用于处理消息被重复多次触发) QVector m_LastValues; // 变量全名和表格行数的对应关系 QHash m_VariablesRows; // 本Gvl分组的名称 QString m_strGroup; // 本Gvl分组的模式(用于切换编辑和不可编辑,以及表格头目) GVL_MODE m_gvlMode; };