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

标签 c++ qt

我正在尝试将名为 f 的对象保存到文件中,出现错误:流 << f 中的运算符 << 不匹配

函数如下:

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();
              }
          }

}

如果您需要更多信息,请告诉我? 这些是不同类 filmInput 中的 2 个函数

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

最佳答案

QTextStream用于存储文本,而不是 Film .您需要可以存储您的对象的东西。也许QDataStream会帮助你?但是你需要序列化你的 Film反对类似 QByteArray 的内容.

更新:
现在我看到你需要 Film::toString()方法将为您提供 Film 的字符串表示形式目的。然后你就写stream<<f.toString();而不是 stream<<f; .
或者你可以实现operator<<这需要 QTextStreamFilm .
Film::toString() 的示例:

QString Film::toString()
{
  return mTitle + " " + mDuration + " " + mDirector + " " + mDate.toString();
}

关于c++ - Qt C++ 将对象保存到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18210846/

相关文章:

c++ - 调用虚函数时继承类 "invalid pointer error"

java - 在 Java 中通过套接字发送数据并在 C++ 中使用 QT 套接字接收数据

c++ - 使用相同输入连续调用 ID3D11DeviceContext 状态的成本?

c++ - 调用 fdopen() 后出现 Errno 22

c++ - QDialog派生类

qt - 部署 Qt 共享库时替换 RPATH

c++ - QQuickView 窗口在鼠标调整大小时卡住

c++ - 指向数据结构中元素的指针安全吗? (C++ 与 QT)

c++ - 函数的 va_arg 参数存储在堆栈内存还是堆内存中?

c++ - Xcode 5 LLVM printf with %s format specifier not working in debug console