Я пытаюсь реализовать функции для записи и чтения QLinkedList<DataClass>
в файл, используя QDataStream
.Документация Qt ( Чтение и запись классов коллекции Qt ) на данный момент немного экономна.
Моя функция записи выглядит следующим образом:
void
MainWindow::handle_btn_save_clicked()
{
auto fileName = QFileDialog::getSaveFileName(
this,
tr("Save Data"),
".",
tr("Files (*)") );
QFile file(fileName);
file.open(QIODevice::WriteOnly);
QDataStream dstream(&file);
// write table data to file
dstream << dataList; // QLinkedList<DataClass> *dataList;
file.close();
}
и чтениефункция должна выглядеть следующим образом:
void
MainWindow::handle_btn_load_clicked()
{
auto fileName = QFileDialog::getOpenFileName(
this,
tr("Load Data"),
".",
tr("Files (*)") );
QFile file(fileName);
file.open(QIODevice::ReadOnly);
QDataStream dstream(&file);
QLinkedList<DataClass> *dl;
dstream >> dl;
file.close();
}
компилятор выдает это
/opt/Qt/5.10.1/gcc_64/include/QtCore/qdatastream.h:263: error: no match for ‘operator>>’ (operand types are ‘QDataStream’ and ‘QLinkedList<MainWindow::DataClass>::value_type {aka MainWindow::DataClass}’)
s >> t;
~~^~~~
Как это сделать правильно?
Определяется следующим образом:
class DataClass
{
public:
int val0;
int val1;
int val2;
};