Qt之MVC设计模式
2017-11-28 本文已影响0人
YBshone
关于Qt开发,数据的临时存储及调用,可以使用C++编成之MVC设计模式。
Model:模型数据 定义
View:前端视图显示
Controller:即,控制器 代理。调控视图和数据之间信息的传递
声明结构体
**FormMgr.h**
typedef struct tagFormPrj //编成方案
{
int fpId; //方案id
QString fpName; //方案名称
QString fpPath; //方案文件路径
QString fpDesc; //方案描述
}FORMPRJ;
实现数据传递
**FormMgr.cpp**
const QString FORM_LIST_TAG("ForceList");
const QString FORM_PRJ_TAG("Project");
const QString FORM_FORM_TAG("Formation");
const QString FORM_CMD_TAG("Commander");
const QString FORM_UNIT_TAG("Unit");
const QString FORM_PRJ_LIST_PATH(".\\Formation\\FormPrjList.xml");
bool CFormMgr::openFormPrj(int clr, QString fpPath)
{
QDomDocument doc;
QDomElement root, prj, df;
QString errMsg;
int errRow, errCol;
FORMPRJ fp;
//打开文件
QFile fFile(fpPath);
if (!fFile.open(QIODevice::ReadOnly | QIODevice::Text))
return false;
if (!doc.setContent((QIODevice *)&fFile, &errMsg, &errRow, &errCol))
{
fFile.close();
qDebug("兵力编成文件格式错误,无法打开。");
return false;
}
fFile.close();
root = doc.documentElement();
if (root.tagName() != FORM_LIST_TAG)//判断XML文件中是否含有 根目录'Project'
{
qDebug("兵力编成文件中无兵力列表。");
return false;
}
//读取方案属性
prj = root.firstChildElement(FORM_PRJ_TAG);//根目录第一个元素
fp.fpId = prj.attribute("id").toInt();//XML方案中,根目录中元素 `Id`值 的传递 到结构体FORMPRJ中
fp.fpName = prj.attribute("name");
fp.fpPath = fpPath; //使用传入路径更新方案路径
fp.fpDesc = prj.attribute("desc");
return true;
}
XML结构图