前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Qml读写文件_读写文件权限怎么开

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

作者头像
全栈程序员站长
发布于 2022-11-17 05:42:56
发布于 2022-11-17 05:42:56
2.4K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

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

1 FileObject.h

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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

2 FileObject.cpp

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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!!!");
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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.cn/234248.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年11月3日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Qt之Qfile类
很多应用程序都具备操作文件的能力,包括对文件进行写入和读取,创建和删除文件等等,甚至某些应用程序的就是为了操作文件,像WPS Office。基于此Qt框架中专门提供了对文件操作的类:QFile。
破晓的历程
2025/05/15
1140
Qt之Qfile类
qml入门教程_前端从入门到放弃
<9>:Property and number animation in mouse event:
全栈程序员站长
2022/09/19
2K0
qml入门教程_前端从入门到放弃
【C++】Qt:QML介绍与入门示例
Qt Quick是一个用于构建现代、高效、可扩展用户界面的框架。它是Qt开发框架的一部分,旨在通过声明性语法和JavaScript绑定来简化用户界面的设计和实现。
DevFrank
2024/07/24
1.1K0
【C++】Qt:QML介绍与入门示例
【QML与C++混合编程】用QVariantList传递数组类型成员
更新:Record类要用指针,QObject 不能有拷贝函数。 我有一个C++中自定义的ReaderModel,继承自QAbstractListModel类,传递给了QML。 它的me成员是一个Reader指针,Reader有个成员是RecordModel。 通过reader获取的recordModel,在qml中类型是QVariant(RecordModel),我没法把它作为一个ListView的model。 要怎么让它绑定给view呢? 我尝试者把数据拷贝到一个直接传给qml的recordModel,但是当数据之后发生了变化时,视图就不会更新,除非再次拷贝,这样效率不可观。
饶文津
2020/06/02
4.1K0
14.QT-QFile文件,QBuffer缓冲区,QDir目录,QFileSystemWatcher文件系统监视
QFile Qt中所有与IO相关的类都继承于QIODevice,继承图如下所示: 其中QFile类便是用于文件操作的类 在QT中,将文件当做一种特殊的外部设备对待(比如:串口,usb等就是外部设备)
诺谦
2018/05/28
2.4K0
QT之Qml使用QSystemTrayIcon实现系统托盘
 QT中实现这一功能使用QSystemTrayIcon,它为应用程序在系统托盘中提供一个图标。现代操作系统通常在桌面上提供一个特殊区域,称为系统托盘或通知区域,长时间运行的应用程序可以在其中显示图标和短消息。
杨永贞
2022/05/11
2.9K0
QT之Qml使用QSystemTrayIcon实现系统托盘
Qt file文件操作详解
很多应用程序都具备操作文件的能力,包括对文件进行写入和读取,创建和删除文件等等,甚至某些应用程序的就是为了操作文件,像WPS Office。基于此Qt框架中专门提供了对文件操作的类:QFile。
破晓的历程
2025/05/15
1650
Qt file文件操作详解
QML文件读写控件(预览版)
File组件通过source的属性来设置需要读写的文件,还可以通过访问/设置text的内容来读取/写入文件。
Qt君
2019/12/25
7220
【QML】QML与C++混合编程
QML与C++混合编程 使用QQuickView pro文件中添加quick模块 #include<QApplication> #include<QQuickView> int main(int argc,char* argv[]){ QApplication app(argc,argv); //加载qml文件到视图 QQuickView view; view.setSource(QUrl("column.qml")); view.show(); re
半生瓜的blog
2023/05/13
1K0
项目总结:Ubuntu+QtCreator
    说一下近期的项目Linux下Qt开发,主要功能:TreeView点击不同的节点对应不同的界面,界面分类有 终端,高亮Editor,TextBrower。
何其不顾四月天
2023/03/10
5520
QFileDialog文件选择框
在上一节课中,所在文件的路径被我们硬编程到了代码中,我们无法进行选择,那么有没有一种方式让我们可以自由的选择文件呢?有的兄弟,有的!像这样的有QFileDialog。
破晓的历程
2025/05/15
1470
QFileDialog文件选择框
Qt读写文件(2种方式)实现详解
FileWR.h #pragma once #include <QtWidgets/QMainWindow> #include "ui_FileWR.h" class FileWR : public QMainWindow { Q_OBJECT public: FileWR(QWidget *parent = Q_NULLPTR); private: Ui::FileWRClass ui; private slots: void on_pushButton_clicked();
zls365
2020/08/19
1.4K0
Qt读写文件(2种方式)实现详解
log4qt内存泄露问题,heob内存检测工具的使用
测试用例很简单,就是一个MainWindow界面上放置两个按钮。点下按钮分别启动一个线程,间隔10ms不断的向日志文件里写日志。
杨永贞
2022/07/28
2.2K0
log4qt内存泄露问题,heob内存检测工具的使用
Qt Quick实践系列-Qml与Widget交互
  QQuickWidget底层继承的是QWidget,但它可以加载Qml文件(组件),但我们有时候需要和Qml文件(组件)数据交互使用,本文介绍几种QQuickWidget与Qml交互数据的方法。
Qt君
2020/03/19
4.8K0
Qt多线程编程实战:MD5单项加密
现在的加密/解密技术主要有三种:对称加密,非对称加密,和单向加密,这三种加密解密技术的组合就是现在电子商务的基础,它们三个有各自最适合的领域
DeROy
2020/09/08
1.3K0
Qt多线程编程实战:MD5单项加密
QML动态显示组件(支持在线编辑动态刷新)
QML动态组件显示器主要用于方便界面开发,在线编辑保存后自动刷新组件界面,并支持拖拽文件显示的方式。
Qt君
2019/07/15
5.6K0
【QT】文件系统相关 -- QFile
🔥 文件操作是应用程序必不可少的部分。Qt 作为⼀个通用开发库,提供了跨平台的文件操作能力。Qt 提供了很多关于⽂件的类,通过这些类能够对文件系统进行操作,如文件读写、文件信息获取、文件制或重命名等
IsLand1314
2025/03/15
1880
【QT】文件系统相关 -- QFile
qml 结合 QSqlTableModel 动态加载数据 MVC「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/127739.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/25
1.2K0
qml 结合 QSqlTableModel 动态加载数据 MVC「建议收藏」
Qt-使用控件ListView
如何对ListView进行数据添加,只需要设置ListView的Model即可。 1.创建一个需要展示的数据的类
kdyonly
2023/03/03
1K0
QT 播放器之列表[通俗易懂]
重写自定义菜单函数,如果右键的时候没有选中任何索引,需要把播放,删除,打开目录设置为不可点击
全栈程序员站长
2022/07/01
2.1K0
相关推荐
Qt之Qfile类
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验