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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 移动端开发遇到的一些兼容性问题及其整理「建议收藏」

    移动端开发遇到的一些兼容性问题及其整理「建议收藏」IOS手机测试时会发现加了margin-bottom的属性无效。解决:替换为padding-bottom或者放个空盒子有高度宽度占位即可。IOS手机的输入框出现未知的内阴影。解决:input:{-webkit-appearance:none;}控制手机上方的标题:document.title;…

    2022年6月24日
    39
  • 极大平面图

    极大平面图一特殊平面图1极大平面图及其性质极大平面图的两种情况,一种是K1到K4四种特殊情况,即1阶到4阶的完全图是极大可平面图另一种就是一般的情况,任意非邻接顶点间添加一条边后,得到的图均是非可平面图。二、平面图的对偶图…

    2022年5月12日
    67
  • 以太坊挖矿回报率_eth挖矿难度曲线

    以太坊挖矿回报率_eth挖矿难度曲线随着时间的推移,全网算力越来越大,挖矿难度越来越高,以太坊挖矿一天收益多少?那么怎么才能提高挖矿收益呢?挖矿的最基本的物理条件就是得有一台运行稳定稳定的矿机,这个不在今天的讨论范围之内。有了一台硬件条件过硬的矿机之后,只要做好一下两点,你就会比别人轻松高出3-5%的收益:第一点:挖矿软件的选择。如果你不想为软件打工的话,一定要选择原版,一定要选择原版、一定要选择原版,重要的事情说三遍。网上的界面版诸如长沙矿工、圣骑士、数字矿工、矿工队长、超级矿工…其实都是在claymore的原版基础上加壳而成,再

    2022年10月15日
    3
  • ELK

    ELK

    2021年5月28日
    100
  • ffmpeg安装及使用教程「建议收藏」

    ffmpeg安装及使用教程「建议收藏」ffmpeg安装及使用教程

    2025年8月29日
    5
  • pycharm中连接mysql

    pycharm中连接mysqlpycharm操作mysql需是pycharm专业版控制台下可以输入sql,选中一行即可执行

    2022年8月29日
    1

发表回复

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

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