永发信息网

如何在QML应用中读写文件

答案:1  悬赏:10  手机版
解决时间 2021-01-21 09:28
如何在QML应用中读写文件
最佳答案
1)创建一个简单的模版应用

我们使用Ubuntu SDK的模版来创建一个最简单的应用:

我们选择“QML App with C++ plugin”模版来做我们的应用。

2)添加文件读写的文件到项目中

我们添加如下的C++ "FileIO类到我们的backend plugin中:

#ifndef FILEIO_H
#define FILEIO_H

#include
#include
#include

class FileIO : public QObject
{
Q_OBJECT

public:
Q_PROPERTY(QString source
READ source
WRITE setSource
NOTIFY sourceChanged)
explicit FileIO(QObject *parent = 0);

Q_INVOKABLE QString read();
Q_INVOKABLE bool write(const QString& data);

QString source() { return mSource; };

public slots:
void setSource(const QString& source) { mSource = source; };

signals:
void sourceChanged(const QString& source);
void error(const QString& msg);

private:
QString getenv(const QString envVarName) const;

private:
QString mSource;
QString datapath;
};

inline QString GBK2UTF8(const QString &inStr)
{
QList codecs = QTextCodec::availableCodecs();

for ( int i = 0; i < codecs.length(); i ++ ) {
// qDebug() << "codec: " + QTextCodec::codecForMib(1015)->toUnicode(codecs.at(i));
qDebug() << "codec: " << QString::fromLocal8Bit(codecs.at(i));
}

QTextCodec *gbk = QTextCodec::codecForName("GBK");

QTextCodec::setCodecForLocale(QTextCodec::codecForLocale());
// QTextCodec *utf8 = QTextCodec::codecForName("UTF-8");

QString g2u = gbk->toUnicode(gbk->fromUnicode(inStr)); // gbk convert utf8
return g2u;
}

#endif // FILEIO_H

#include "fileio.h"
#include
#include
#include
#include
#include

FileIO::FileIO(QObject *parent) : QObject(parent)
{
datapath = getenv("TMPDIR") + "/";
qDebug() << "datapath: " + datapath;
}

QString FileIO::read()
{
qDebug() << "reading ....!";

if (mSource.isEmpty()){
emit error("source is empty");
return QString();
}

QFile file(datapath + mSource);
QFileInfo fileInfo(file.fileName());
qDebug() << "file path: " << fileInfo.absoluteFilePath();

QString fileContent;
if ( file.open(QIODevice::ReadOnly) ) {
QString line;

QTextCodec *gbk = QTextCodec::codecForName("GBK");
QTextStream t( &file );
t.setCodec(gbk);

do {
line = t.readLine();
fileContent += line;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
长连接、短连接是什么意思?哪位大神给讲一下
经外奇穴有哪些 经外奇穴
苹果6sp和oppo r11哪个好
固态水和固态氢气哪个熵值大
安平出过什么名人?
农村自建房二间客厅设在左边还是设在右边
功夫的近义词
单选题下列不能解释高温潮湿条件下储存种子寿
灭火器的选择应考虑哪些因素
天虹桥在哪里啊,我有事要去这个地方
用什么软件可以合成视频
你们杠铃卧推是先练平推还是上斜推还是下斜推
我一台坏的IBM600E,想把液晶该成能在台式机
求助关于赶走恶魔的方法那个任务
数百年来,培育了13位英国首相和78位诺贝尔文
推荐资讯
从保定四通到钟楼做那路车
单选题The city is no longe
315KVA的变压器最大能带多少千瓦的负荷
0.999…的其它数系
姑父是老板敬酒给我我应该怎么喝我喝了一半
美之为美斯恶也是什么意思?
如何将wireshark日志导出
什么是均匀的各向异性体,什么是非均匀的各向
1万元数字如何写
空心砖是属于轻质砖里的一种吗?
为什么我fgo里,我的四星剑士兺呢个强化五星
在包装纸箱中A3B,A3A,W3A,W3K,K3K,B=B,A=B,BX
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?