我正在尝试将名为 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<<
这需要 QTextStream
和 Film
.
Film::toString()
的示例:
QString Film::toString()
{
return mTitle + " " + mDuration + " " + mDirector + " " + mDate.toString();
}
关于c++ - Qt C++ 将对象保存到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18210846/