将QList <T>保存到文件?

bob*_*bby 1 c++ qt qlist qlineedit

我有一个QLineEdit*的QList

QList<QLineEdit*> example;
Run Code Online (Sandbox Code Playgroud)

示例将包含100个lineEdits项.

当我尝试保存或加载到文件时,它无法正常保存或加载QList,如果有的话.我得到的数据远远低于预期.

我在这里QList<T>的资源页面上看到<<&>>的操作符是正确的,但我似乎无法使用它们保存到文件中QDataStream

我也尝试将LineEdits中的所有"text()"值复制到一个单独的字符串列表中,但我仍然无法将它们保存到文件中.任何帮助,将不胜感激.

编辑:看起来就是这样做的.这就是我正在阅读它们的方法,是否有一个更简单的方法,或者我几乎涵盖了它?

    //memoryAddresses
    for(int i = 0; i < 100; i++)
    {
        QString temp;
        loadFile >> temp;
        memAddr.at(i)->setText(temp);
    }
Run Code Online (Sandbox Code Playgroud)

Jes*_*ogt 5

QList<QLineEdit*> 是一个指针列表(基本上是int,所以如果你把它写到文件中,你就不会获得太多有用的信息.

text()方法应该做你想要的.

foreach( const QLineEdit* le, example )
{
  if( le )
  {
     ds << le->text();
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意displayTexttext之间的区别.

回读:

如果您只使用字符串,QTextStream类使用起来会更好(也可以在上面而不是QDataStream上使用...尽管您应该使用相同类型的流进行读写).我目前无法测试此代码,但您可以尝试这样的方法:

QList<QLineEdit*> example;
while(!stream.atEnd())
{
   QString str;
   stream >> str;
   if( stream.isNull() )
     break;
   QLineEdit* le = new QLineEdit();
   le->setText(str);
   example.append(le);
}
Run Code Online (Sandbox Code Playgroud)