如何使用QDataStream在文件中写入和读取QList <mat>?

时间:2017-04-26 08:30:16

标签: c++ qt opencv

我有一个QList包含OpenCv :: Mat的列表。我想将QList写入文件并使用QDataStream将文件读入QList。

以下是我的代码的一部分:

// Variables declarations
QList<Mat> myList;
cv::Mat someData;
QString fileName = "list.dat";
QFile file(fileName);
QDataStream out(&file);
QDataStream in(&file);

// Storing some data into the list
myList.append(someData);
myList.append(someData);
myList.append(someData);

// Writing the list to a file
file.open(QIODevice::WriteOnly);
out << myList;
file.close();

// Reading a file to the list
file.open(QIODevice::ReadOnly);
in >> myList;
file.close();

我收到两个错误:

  

错误:C2678:二进制&#39;&gt;&gt;&#39;:未找到哪个运算符采用类型为&#39; QDataStream&#39;的左手操作数。 (或者没有可接受的转换)

     

错误:C2678:二进制&#39;&lt;&lt;&#39;:找不到运算符,它接受类型&#39; QDataStream&#39;的左手操作数。 (或者没有可接受的转换)

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您需要为自定义类型Mat提供这两个运算符:

QDataStream & operator<<(QDataStream &out, const Mat& mat)
QDataStream & operator>>(QDataStream &in, Mat& mat)