找回密码
 立即注册
Qt开源社区 门户 查看内容

qml读写文件

2019-4-24 05:29| 发布者: admin| 查看: 671| 评论: 0

摘要: 利用qmlRegisterType接口注册一个文件操作类到Qml中,这样Qml就可以实现读写文件。1 FileObject.h#ifndef FILE_OBJECT_H#define FILE_OBJECT_H#includeQObjectclassFileObject:publicQObject{ Q_OBJECT Q_PROP ...

利用qmlRegisterType接口注册一个文件操作类到Qml中,这样Qml就可以实现读写文件。

1 FileObject.h


  1. #ifndef FILE_OBJECT_H

  2. #define FILE_OBJECT_H


  3. #include<QObject>


  4. classFileObject:publicQObject

  5. {

  6. Q_OBJECT

  7. Q_PROPERTY(QString source READ source WRITE setSource NOTIFY sourceChanged)

  8. public:

  9. explicitFileObject(QObject*parent =0);


  10. Q_INVOKABLE QString read();

  11. Q_INVOKABLE bool write(constQString& data);


  12. void setSource(constQString& source){ m_source = source;};

  13. QString source(){return m_source;}


  14. signals:

  15. void sourceChanged(constQString& source);


  16. private:

  17. QString m_source;

  18. };


  19. #endif// FILE_OBJECT_H

2 FileObject.cpp


  1. #include"FileObject.h"


  2. #include<QFile>

  3. #include<QTextStream>


  4. FileObject::FileObject(QObject*parent):

  5. QObject(parent)

  6. {


  7. }


  8. QStringFileObject::read()

  9. {

  10. QString content;

  11. QFile file(m_source);

  12. if( file.open(QIODevice::ReadOnly)){

  13. content = file.readAll();

  14. file.close();

  15. }


  16. return content;

  17. }


  18. boolFileObject::write(constQString& data)

  19. {

  20. QFile file(m_source);

  21. if( file.open(QFile::WriteOnly|QFile::Truncate)){

  22. QTextStream out(&file);

  23. out<<data;

  24. file.close();

  25. returntrue;

  26. }

  27. else{

  28. returnfalse;

  29. }

  30. }

3 注册FileObject到Qml中


  1. #include"FileObject.h"


  2. Q_DECL_EXPORT int main(int argc,char*argv[])

  3. {

  4. ...

  5. qmlRegisterType<FileObject>("FileObject",1,0,"FileObject");

  6. ...

  7. }

4 在Qml中使用FileObject实例


  • 读文件内容 fileObject.read();

  • 写文件 fileObject.write("Hello world!!!");

  1. importQtQuick1.1

  2. importFileObject1.0


  3. Rectangle{

  4. width:640

  5. height:320


  6. Text{

  7. id: myText

  8. anchors.centerIn: parent

  9. }


  10. FileObject{

  11. id: fileObject

  12. source:"test.txt"

  13. }


  14. MouseArea{

  15. anchors.fill: parent

  16. onClicked:{

  17. fileObject.write("Hello world!!!");

  18. myText.text = fileObject.read();

  19. }

  20. }

  21. }


----------------------------------------------------------------------------------------------------------------------
我们尊重原创,也注重分享,文章来源于微信公众号:你才小学生,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了