#ifndef PROJECTMODELDLG_H #define PROJECTMODELDLG_H #include #include #include QT_BEGIN_NAMESPACE namespace Ui { class projectModelDlg; } QT_END_NAMESPACE struct PropertyPage //属性列表信息 { QStandardItemModel* pBase; //基础属性 QStandardItemModel* pSelect; //已选择属性 QMap mCheckState; //属性选择状态 }; typedef QMap MapProperty; //str为属性名,model1基础属性,model2已选择属性 struct PropertyModel //工程模 { MapProperty mapProperty; int nType; //工程模类型,选择图标后确定 }; typedef QMap MapProject; //str为工程名,property为属性集 typedef QMap MapMeta; //str为元模名,project为工程模集 class RenameModel; class projectModelDlg : public QDialog { Q_OBJECT public: projectModelDlg(QWidget *parent = nullptr); ~projectModelDlg(); void initial(); void initialModel(); void initialList(); MapProperty addNewProject(const QString& sMeta,const QString& sProject); //根据元模型、工程模名称生成工程模对象 void update(); void generate(const QString&); //根据输入名称生成表 QString getProjectName() const; //返回当前选择项目的名称 public slots: void onSaveClicked(); void onCancelClicked(); void onGenerateClicked(); void onApplyClicked(); void onRevokeClicked(); void onBaseModelIndexChanged(const QString&); void onProjectIndexChanged(const QString&); void onPropertyIndexChanged(const QString&); void onIconClicked(const QModelIndex &index); //关联图元改变 public: QStringList getModelList() const; //获取元模型列表 QStringList getGroupList(const QString& model) const; //返回该元模下的属性组列表 QStringList getAttributeList(const QString& model,const QString& group) const; //根据元模名和组名返回属性列表 void setItemAttribute(const QString&,QStandardItem*); //设置item的属性(数据库表字段名) QString combinePropertySql(const QStandardItem*); //根据item属性生成sql private: void updateIconList(); //选择工程模后刷新关联图标 private: Ui::projectModelDlg *ui; RenameModel* m_pRenameModel; QStandardItemModel* _viewModel; //索引view模型 MapMeta m_mapTotal; QString _curMeta; //当前元模型 QString _curProject; //当前工程模 QString _curProperty; //当前属性 }; #endif