Как писать и читать в / из файла QResource в Qt 5? - PullRequest
0 голосов
/ 03 сентября 2018

Странно, я добавляю нужный файл в ресурсы через Добавить существующие файлы ... , файл там. Я запускаю qmake («Build-> Run qmake»), чтобы сделать файл доступным. Первая проблема: Я не могу ничего записать в файл с выходного терминала! Но когда я вручную записываю в файл, выходной терминал показывает изменения каждый раз, когда я его запускаю. Вторая проблема: он по-прежнему говорит QIODevice :: read: устройство не открыто ! Вот мой код:

#include <QCoreApplication>
#include <QDebug>
#include <QFile>
#include <QString>
#include <QTextStream>
#include <iostream>

void wFile(QString Filename)
{ 
  QFile  nFile(Filename);
  QTextStream str(&nFile);
  qDebug() << "what do you want to write in the desired file: ";
  str.readLine();
  if (!nFile.open(QFile::WriteOnly  | QFile::Text))
  {
    qDebug() << "could not open the file";
    return;
  }
  nFile.flush(); 
  nFile.close();
 }

void read (QString Filename){
  QFile nFile(Filename);

  if(!nFile.open(QFile::ReadOnly | QFile::Text))
  {
    qDebug() << "could not open file for reading";
    return;
  }
  QTextStream in(&nFile);
  QString nText = in.readAll();

  qDebug() << nText;
  nFile.close();
 }


int main(int argc, char *argv[])
{
 QCoreApplication a(argc, argv);
 QString nFilename =":/MyFiles/DocumentArminV.txt";

 wFile(nFilename);
 read(nFilename);

 return a.exec();
}

А вот выходной терминал кода: out put

1 Ответ

0 голосов
/ 03 сентября 2018

Файлы, сохраненные в qresource , доступны только для чтения , поскольку они являются частью исполняемого файла, поэтому вы не можете писать или изменять их.

документы:

enter image description here

В настоящее время Qt всегда хранит данные непосредственно в исполняемом файле, даже в Windows, macOS и iOS, где операционная система обеспечивает встроенную поддержку ресурсов. ...

...