Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt c++;将对象保存到文件_C++_Qt - Fatal编程技术网

C++ Qt c++;将对象保存到文件

C++ Qt c++;将对象保存到文件,c++,qt,C++,Qt,我试图将一个名为f的对象保存到一个文件中,但出现了错误:运算符QTextStream不匹配用于存储文本,而不是Film。您需要能够存储对象的东西。也许qdata-stream会对您有所帮助?但是您需要将您的电影对象序列化为类似QByteArray更新: 现在我看到您需要Film::toString()方法,该方法将为您提供Film对象的字符串表示。然后您只需使用下面的函数编写stream(语法可能不是100%正确),现在就可以向流中写入Film.toString() QString Film::

我试图将一个名为f的对象保存到一个文件中,但出现了错误:运算符
QTextStream
不匹配用于存储文本,而不是
Film
。您需要能够存储对象的东西。也许
qdata-stream
会对您有所帮助?但是您需要将您的
电影
对象序列化为类似
QByteArray


更新:
现在我看到您需要
Film::toString()
方法,该方法将为您提供
Film
对象的字符串表示。然后您只需使用下面的函数编写
stream(语法可能不是100%正确),现在就可以向流中写入
Film.toString()

QString Film::toString()
{ 
QTextStream流;

流你甚至有一个
操作符吗?我想这是因为你不能将你的类对象添加到流中,你需要分解胶片或添加胶片函数或您写入流的内容,而不是添加2个函数,它们应该将对象更改为纯文本以保存到文件。此函数是否用于替换void FilmWriter::saveFilm(Film&f)?否,在您的电影类中添加此函数对不起,在上面的示例中出错了。我将对其进行更改,在filmWriter中获取此函数返回的字符串,然后将此字符串写入您的文本流
void FilmWriter::saveFilm(Film& f){
    QString fileName = QFileDialog::getSaveFileName(this,("Save File"));
          if (fileName != "") {
              QFile file(fileName);
              if (!file.open(QIODevice::WriteOnly)) {
                  QMessageBox::critical(this, ("Error"),("Could not open file"));// error message
              } else {
                  QTextStream stream(&file);
                  stream << f;
                  stream.flush();
                  file.close();
              }
          }

}
void FilmInput::getFilm(){
    Film f1(titleEdit->toPlainText(),durationEdit->toPlainText().toInt() ,directorEdit->toPlainText(),
             QDate::fromString(relDateEdit->toPlainText(),"dd/MM/YYYY"));;
    obtainFilmData(f1);
}

void FilmInput::obtainFilmData(Film &f){
    saveFilm(f);
}
QString Film::toString()
{
  return mTitle + " " + mDuration + " " + mDirector + " " + mDate.toString();
}
QString Film::toString()
{ 
    QTextStream stream;
    stream << someFilmVariable << " " << someOtherFilmVariable;
    return stream.string()
}