gpt4 book ai didi

qt - 从 qml 中的 .txt 或 .csv 文件读取一行(Qt Quick)

转载 作者:行者123 更新时间:2023-12-01 18:09:38 24 4
gpt4 key购买 nike

我需要在模拟屏幕上显示一个字符串。为此,我应该从现有的 Filename.txt/Filename.csv 文件中读取文本。文本参数已更新,如下面的代码所示。我需要从文本文件访问字符串并在 MarqueeText 元素中使用它。访问的字符串应在 MarqueeText 元素的 text 字段中使用。

MarqueeText {
id:scrolltext
width: 255
height: 48
anchors.verticalCenter: parent.horizontalCenter
text: //i need to access the string in text file to be displayed
}

请帮我解决这个问题。谢谢。

最佳答案

按照 wiki 页面阅读有关访问 QML 中的文件的信息。诺基亚维基论坛http://web.archive.org/web/20150227025348/http://developer.nokia.com/community/wiki/Reading_and_writing_files_in_QML

摘要:

创建自定义 QML 类型 FileIO:

fileio.h

#ifndef FILEIO_H
#define FILEIO_H

#include <QObject>

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 mSource;
};

#endif // FILEIO_H

fileio.cpp

#include "fileio.h"
#include <QFile>
#include <QTextStream>

FileIO::FileIO(QObject *parent) :
QObject(parent)
{

}

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

QFile file(mSource);
QString fileContent;
if ( file.open(QIODevice::ReadOnly) ) {
QString line;
QTextStream t( &file );
do {
line = t.readLine();
fileContent += line;
} while (!line.isNull());

file.close();
} else {
emit error("Unable to open the file");
return QString();
}
return fileContent;
}

bool FileIO::write(const QString& data)
{
if (mSource.isEmpty())
return false;

QFile file(mSource);
if (!file.open(QFile::WriteOnly | QFile::Truncate))
return false;

QTextStream out(&file);
out << data;

file.close();

return true;
}

注册新的 QML 类型:

#include "fileio.h"

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

实际 QML 使用情况:

import QtQuick 1.1
import FileIO 1.0

Rectangle {
width: 360
height: 360
Text {
id: myText
text: "Hello World"
anchors.centerIn: parent
}

FileIO {
id: myFile
source: "my_file.txt"
onError: console.log(msg)
}

Component.onCompleted: {
console.log( "WRITE"+ myFile.write("TEST"));
myText.text = myFile.read();
}
}

关于qt - 从 qml 中的 .txt 或 .csv 文件读取一行(Qt Quick),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8894531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com