美文网首页
Qt之MVC设计模式

Qt之MVC设计模式

作者: YBshone | 来源:发表于2017-11-28 16:35 被阅读0次

    关于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结构图XML结构图

    相关文章

      网友评论

          本文标题:Qt之MVC设计模式

          本文链接:https://www.haomeiwen.com/subject/sbrebxtx.html