Qml读写文件_读写文件权限怎么开

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

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

1 FileObject.h

#ifndef FILE_OBJECT_H
#define FILE_OBJECT_H

#include <QObject>

class FileObject : public QObject
{ 
   
    Q_OBJECT
    Q_PROPERTY(QString source READ source WRITE setSource NOTIFY sourceChanged)
public:
    explicit FileObject(QObject *parent = 0);

    Q_INVOKABLE QString read();
    Q_INVOKABLE bool write(const QString& data);
    
	void setSource(const QString& source) { 
    m_source = source; };
    QString source() { 
    return m_source; }
    
signals:
    void sourceChanged(const QString& source);

private:
    QString m_source;
};

#endif // FILE_OBJECT_H

Jetbrains全家桶1年46,售后保障稳定

2 FileObject.cpp

#include "FileObject.h"

#include <QFile>
#include <QTextStream>

FileObject::FileObject(QObject *parent) :
    QObject(parent)
{ 
   

}

QString FileObject::read()
{ 
   
	QString content;
    QFile file(m_source);
    if ( file.open(QIODevice::ReadOnly) ) { 
   
    	content = file.readAll();
        file.close();
    } 
    
    return content;
}

bool FileObject::write(const QString& data)
{ 
   
    QFile file(m_source);
    if ( file.open(QFile::WriteOnly | QFile::Truncate) ) { 
   
        QTextStream out(&file);
   		out<<data;
    	file.close();
    	return true;
    }
    else { 
   
    	return false;
    }
}

3 注册FileObject到Qml中

#include "FileObject.h"

Q_DECL_EXPORT int main(int argc, char *argv[])
{ 
   
	...
   	qmlRegisterType<FileObject>("FileObject", 1, 0, "FileObject");
    ...
}

4 在Qml中使用FileObject实例

  • 读文件内容fileObject.read();
  • 写文件fileObject.write("Hello world!!!");
import QtQuick 1.1
import FileObject 1.0

Rectangle { 
   
    width: 640
    height: 320
    
    Text { 
   
        id: myText
        anchors.centerIn: parent
    }

    FileObject{ 
   
        id: fileObject
        source: "test.txt"
    }

	MouseArea { 
   
		anchors.fill: parent
		onClicked: { 
   
			fileObject.write("Hello world!!!");
			myText.text =  fileObject.read();
		}
	}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234248.html原文链接:https://javaforall.net

(0)
上一篇 2025年6月8日 下午7:15
下一篇 2025年6月8日 下午7:43


相关推荐

  • jQuery官网下载步骤[通俗易懂]

    jQuery官网下载步骤[通俗易懂][转载出处](https://blog.csdn.net/u011870547/article/details/50033113)[原文作者](https://blog.csdn.net/u011870547)①.百度jQuery,进入官网②.进入官网后,点击下载③.之后进入下载页面,会看到有各种版本,解压版和未…

    2022年6月3日
    46
  • 《PRML》学习笔记2.2——多项式分布和狄利克雷分布

    《PRML》学习笔记2.2——多项式分布和狄利克雷分布  上回讲完了伯努利分布、二项分布和Beta分布,以及从最大似然估计的非参数化思想和引入共轭先验,使得参数变成一个变量,建模求解的参数化方法两方面介绍了求解模型参数的方法。没有读过的朋友可以参考:《PRML》学习笔记2.1——伯努利分布、二项分布和Beta分布,从贝叶斯观点出发  今天将为大家介绍两个更难理解的分布——多项式分布和狄利克雷分布。1.多项式变量和多项式分布  …

    2022年10月12日
    3
  • matlab中wavedec2函数,小波滤波器–wavedec2函数[通俗易懂]

    matlab中wavedec2函数,小波滤波器–wavedec2函数[通俗易懂]wavedec2函数:1.功能:实现图像(即二维信号)的多层分解.多层,即多尺度.2.格式:[c,s]=wavedec2(X,N,’wname’)[c,s]=wavedec2(X,N,Lo_D,Hi_D)(我不讨论它)3.参数说明:对图像X用wname小波基函数实现N层分解,这里的小波基函数应该根据实际情况选择,具体办法可以:db1、db2、……db45、haar.输出为c,s.c为各层分…

    2022年6月28日
    46
  • 常见的六大聚类算法

    常见的六大聚类算法1 K Means K 均值 聚类算法步骤 1 首先我们选择一些类 组 并随机初始化它们各自的中心点 中心点是与每个数据点向量长度相同的位置 这需要我们提前预知类的数量 即中心点的数量 2 计算每个数据点到中心点的距离 数据点距离哪个中心点最近就划分到哪一类中 3 计算每一类中中心点作为新的中心点 4 重复以上步骤 直到每一类中心在每次迭代后变化不大为止 也可

    2026年3月26日
    2
  • Shell脚本学习之expect命令

    Shell脚本学习之expect命令一 概述 nbsp nbsp nbsp nbsp nbsp nbsp nbsp 我们通过 Shell 可以实现简单的控制流功能 如 循环 判断等 但是对于需要交互的场合则必须通过人工来干预 有时候我们可能会需要实现和交互程序如 telnet 服务器等进行交互的功能 而 expect 就使用来实现这种功能的工具 nbsp nbsp nbsp nbsp nbsp nbsp expect 是一个免费的编程工具语言 用来实现自动和交互式任务进行通信 而无需人的干预 expect 是不断发展的 随着时间的流逝 其功

    2026年3月17日
    2
  • 光棍节程序员闯关秀过关攻略「建议收藏」

    光棍节程序员闯关秀过关攻略「建议收藏」光棍节,与我无关,结果昨夜下了场雨,导致路面结冰,大侠的出行计划泡汤了,只好在家淘宝抢东西。结果网友发来一个光棍节程序员闯关秀游戏,让大侠一发不可收拾。。。游戏地址http://segmentfault.com/game/花了两个小时过了9关,最后一关没过去。欢迎大家补充。第一关:本关用右键查看URL就能得到地址,大侠用的GoogleChrome,查看元素,下面的…

    2022年7月16日
    29

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号