应用初始化本地数据,需要读取配置文件,小编介绍如何通过xml简单写入配置文件,至于为什么选择这个格式,主要因为在qml中有一个很好

的类使用:XmlListModel

xmlListModel能直接读取xml配置文件,快速方便开发,再加上自己写一个专门写入配置文件的类,两个就成了绝配啊!

代码:

datasbase.h

#ifndef DATASBASE_H

#define DATASBASE_H

#include

#include

#include

#include

#include

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

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("/mnt/sdcard/Android/data/colorlight");

}

//初始化配置数据

playListDatas=new QFile("/mnt/sdcard/Android/data/colorlight/playlist.xml");

xmlWriter=new QXmlStreamWriter(playListDatas);

xmlWriter->setAutoFormatting(true);

qDebug()<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

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

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文件读写文件,qt android 开发之写入xml配置文件篇相关推荐

  1. android请求读写外设权限,android读写文件完整版

    鉴于实现android文件读写的惨痛经历,我决定将其实现过程写下来.其实网站上关于这方面的博客.讨论很多,我也看了很多,但都不太完整(也可能是我没看明白),导致我在这个问题上纠结了足足4天,在完成前1 ...

  2. Android sdcard读写文件(二)

    继续说sdcard读写文件的情况,这篇博客说的是在sdcard根目录中读写文件,着重的而是多种方式的读写文件.直接给出代码: FileService.java package com.llp.clas ...

  3. Android中读写文件的N种方法

    在android或者java中读写文件时,我们常常面临不知道该用哪种方法来实现,今天我们一起来总结一下N种读写文件的方法. 一.文件输入输出流读写文件 public void writeFileStr ...

  4. Android的读写文件权限

    /**测试没通过* 写文件* @param str*/public void write(String str){File file = new File(Environment.getExterna ...

  5. QT二进制流方式读写文件

    ui内容为两个按钮加一个文本编辑控件,以字节流方式保存一个文件,然后以流方式打开并通过转码显示. #include "mywidget.h" #include "ui_m ...

  6. Java文件读写操作(c站最全!一篇就够了)

    写在前面   你们好,我是小庄.很高兴能和你们一起学习Java.如果您对Java感兴趣的话可关注我的动态.   写博文是一种习惯,在这过程中能够梳理和巩固知识. Java文件读写操作 一.File类 ...

  7. Android单元测试读写文件,xml-如何为android单元测试提供数据文件

    我正在开发使用Android的java.xml.parsers.DocumentBuilder和DocumentBuilderFactory实现从XML文件加载信息的软件. 我正在编写对象的单元测试, ...

  8. Android单元测试读写文件,Android Studio单元测试:读取数据(输入)文件

    根据android-gradle-plugin版本: 1.版本1.5和更高版本: 只需把json文件到src / test / resources / test.json并引用它 classLoade ...

  9. android 创建目录/文件/读写文件

    1.创建目录及文件 private void mkdir_folder_file(){ File folder = new File("/sdcard/test");     if ...

最新文章

  1. Matlab随笔之矩阵入门知识
  2. 关于开源网管软件选型的几点思考
  3. [Life Sciences.AI]专栏介绍及内容分类(持续更新......)
  4. 平滑重启更新(GR机制)
  5. 如何在JAVA程序中使用Struct一次传入多条数据给Oracle的存储过程
  6. [Bootstrap-插件使用]Jcrop+fileinput组合实现头像上传功能
  7. 大数据python试卷_大数据起步--Python语言-中国大学mooc-试题题目及答案
  8. bzoj2146 Construct
  9. php手机端多图预览上传,JS实现多图预览上传的实例代码
  10. IP、TCP、UDP、HTTP头部信息
  11. LeetCode 559. N叉树的最大深度
  12. 用SQL表达内连接和外链接
  13. adb pull 报错处理:adb: error: cannot create file/directory 'E:\': No such file or directory
  14. 黑马程序员全套Java教程_Java基础教程_目录
  15. Dev ChartControl 显示设置百分比
  16. 多多客id是什么意思_拼多多skuid是什么意思(关于sku编码的详细介绍)
  17. EEE(Energy Efficient Ethernet)-节能以太网
  18. matlab语音算法,[转载]RLS算法多麦克风语音降噪( matlab编程 )
  19. 君子周而不比,小人比而不周
  20. 综述|姿态估计方法大盘点

热门文章

  1. esxi备份,datastore,vmdk
  2. 您对无法重新创建的表进行了更改或者启用了“阻止保存要求重新创建表的更改”选项...
  3. 好好学一遍JavaScript 笔记(一)
  4. 引用类型赋值“.NET技术”为null与加速垃圾回收
  5. [数据库字典]简单的3个SQL视图搞定所有SqlServer数据库字典
  6. mysqldump的几个主要选项探究
  7. @初学编程的朋友们,如果你能学得这些方法,学习将会更快一步!
  8. plsql中文乱码,显示问号
  9. 数字化转型的4个阶段,从报表到可视化再到数据平台,谁更重要?
  10. 程序员每天少吃===活120岁