qt android 开发之写入xml配置文件篇

发布时间:2019-06-25 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了qt android 开发之写入xml配置文件篇脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

应用初始化本地数据,需要读取配置文件,小编介绍如何通过XMl简单写入配置文件,至于为什么选择这个格式,主要因为在qML中有一个很好
的类使用:XmlListModel
xmlListModel能直接读取xml配置文件,快速方便开发,再加上自己写一个专门写入配置文件的类,两个就成了绝配啊!
代码:
datasbase.h

#ifndef DATASBASE_H
#define DATASBASE_H

#include <QObject>
#include <QXmlStreamWriter>
#include <QFile>
#include <QDir>
#include <QString>

class DatasBase : public QObject
{
    Q_OBJECT
public:
    explicit DatasBase(QObject *parent = 0);
    ~DatasBase();
    Q_INVOKABLE void setFileName(QString filename);

    Q_INVOKABLE void writeStartDocument();
    Q_INVOKABLE void writeStartElement(QString str);
    Q_INVOKABLE void writeTextElement(QString elementT, QString content);
    Q_INVOKABLE void writeEndElement();
    Q_INVOKABLE void writeEndDocument();
    Q_INVOKABLE bool openplaylistFile();
    Q_INVOKABLE void closeplaylistFile();


signals:

public slots:
private:
    QFile *playListDatas;
    QDir *playListDatasdir;
    QXmlStreamWriter *xmlWriter;
};

#endif // DATASBASE_H

datasbase.cpp

#include "datasbase.h"
#include <QDebug>


DatasBase::DatasBase(QObject *parent) : QObject(parent)
{
//"file:///mnt/android/data/colorlight/playlist->xml"
    
    //配置文件的路径
    
    playListDatasdir=new QDir("/mnt/sdcard/Android/data/colorlight/playlist.xml");
    //判断是否存在文件
    
    if(!playListDatasdir->exists()){

        qDebug()<<"mkdir**************"<< playListDatasdir->mkdir("/mnt/sdcard/Android/data/colorlight");
    }
    
    //初始化配置数据
    
    playListDatas=new QFile("/mnt/sdcard/Android/data/colorlight/playlist.xml");
    xmlWriter=new QXmlStreamWriter(playListDatas);
    xmlWriter->setAutoFormatting(true);
    qDebug()<<"path"<<playListDatasdir->absolutePath();
}

DatasBase::~DatasBase()
{

}

//设置配置文件的文件名

void DatasBase::setFileName(QString filename){
    playListDatas->setFileName(filename);
}

bool DatasBase::openplaylistFile(){
    return playListDatas->open(QIODevice::WriteOnly | QIODevice::Text);
}

void DatasBase::writeStartDocument(){
    xmlWriter->writeStartDocument();
}

void DatasBase::writeStartElement(QString str){
    xmlWriter->writeStartElement(str);
}

void DatasBase::writeTextElement(QString elementT, QString content){
    xmlWriter->writeTextElement(elementT,content);
}


void DatasBase::writeEndElement(){
    xmlWriter->writeEndElement();
}

void DatasBase::writeEndDocument(){
    xmlWriter->writeEndDocument();
}

void DatasBase::closeplaylistFile(){

    playListDatas->close();
    
}

通过这个类,我们可以方便在qml中调用写入数据配置的文件
下面是写入音乐列表配置的代码例子


    XmlListModel{
        id:playlistModel
        source:"file:///mnt/sdcard/Android/data/colorlight/playlist.xml"
        query: "/data/music"
        XmlRole{
            name:"name";query: "name/string()";isKey: true
        }
        XmlRole{
            name:"path";query: "path/string()";isKey: true
        }
        onStatusChanged: {
            if(status==XmlListModel.Ready){
                for(var mindex=0;mindex<playlistModel;mindex++){
                    tempplaylistdata.append({"name":playlistModel.get(mindex).name,
                                            "path":playlistModel.get(mindex).path})
                }
            }
        }
    }

    ListModel{
        id:tempplaylistdata 
    }
    
        //保存扫描后的音乐文件
    function saveDatas(){
        if(tempplaylistdata.count==0){
            return
        }

//        console.log()

        datasbase.openplaylistFile()
        datasbase.writeStartDocument()
        datasbase.writeStartElement("data")
        for(var a=0;a<tempplaylistdata.count;a++){
            datasbase.writeStartElement("music")
            datasbase.writeTextElement("name",tempplaylistdata.get(a).name)
            datasbase.writeTextElement("path",tempplaylistdata.get(a).path)
            datasbase.writeEndElement()
        }
        datasbase.writeEndElement()
        datasbase.writeEndDocument()
        datasbase.closeplaylistFile()
    }

脚本宝典总结

以上是脚本宝典为你收集整理的qt android 开发之写入xml配置文件篇全部内容,希望文章能够帮你解决qt android 开发之写入xml配置文件篇所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。