關(guān)于Qt開發(fā)猎醇,數(shù)據(jù)的臨時存儲及調(diào)用若债,可以使用C++編成之MVC設(shè)計模式蒂秘。
Model:模型數(shù)據(jù) 定義
View:前端視圖顯示
Controller:即,控制器 代理染突。調(diào)控視圖和數(shù)據(jù)之間信息的傳遞
聲明結(jié)構(gòu)體
**FormMgr.h**
typedef struct tagFormPrj //編成方案
{
int fpId; //方案id
QString fpName; //方案名稱
QString fpPath; //方案文件路徑
QString fpDesc; //方案描述
}FORMPRJ;
實現(xiàn)數(shù)據(jù)傳遞
**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`值 的傳遞 到結(jié)構(gòu)體FORMPRJ中
fp.fpName = prj.attribute("name");
fp.fpPath = fpPath; //使用傳入路徑更新方案路徑
fp.fpDesc = prj.attribute("desc");
return true;
}