DiagramDesigner/include/projectModelDlg.h

75 lines
2.7 KiB
C
Raw Normal View History

2025-03-04 09:44:03 +08:00
#ifndef PROJECTMODELDLG_H
#define PROJECTMODELDLG_H
#include <QDialog>
#include <QStandardItemModel>
#include <QItemSelection>
QT_BEGIN_NAMESPACE
namespace Ui { class projectModelDlg; }
QT_END_NAMESPACE
struct PropertyPage //属性列表信息
{
QStandardItemModel* pBase; //基础属性
QStandardItemModel* pSelect; //已选择属性
QMap<QString,bool> mCheckState; //属性选择状态
};
typedef QMap<QString,PropertyPage> MapProperty; //str为属性名model1基础属性model2已选择属性
struct PropertyModel //工程模
{
MapProperty mapProperty;
int nType; //工程模类型,选择图标后确定
};
typedef QMap<QString,PropertyModel> MapProject; //str为工程名property为属性集
typedef QMap<QString,MapProject> 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