QVector not appending!

QVector not appending!

本文关键字:appending not QVector      更新时间:2023-10-16

我遇到一个问题。

由于某种原因,尽管我在QString中有一个值,但对QVector执行append()不能工作,最终我仍然只有一个空向量。

    QList<QVariant> listServers = mapRepos.values ( "servers" ); // Finally, the last data structure, for holding server lists.
    // Populate the repository information with the server lists.
    for ( int i = 0; i < listServers.size(); ++i ) {
      for ( int j = 0; j < listServers.at ( i ).toList().size(); ++j ) {
        std::cout << "On file: " << listServers.at ( i ).toList().at ( j ).toString().toStdString() << std::endl;
        std::cout << "Type #: " << listServers.at ( i ).toList().at ( j ).type() << std::endl;
        buffer3 = listServers.at ( i ).toList().at ( j ).toString();
        std::cout << "In buffer: (" << buffer3.toStdString() << ")" << std::endl;
        arrayRepos.value ( j ).urls.append ( buffer3 );
        std::cout << "In memory: " << arrayRepos.value ( i ).urls.value ( i ).toStdString() << std::endl;
      }
    }
  }

这是源文件中相关的代码片段。第一个返回一个URL,第二个返回10(根据文档,这意味着QVariant包含一个字符串,这是正确的)。第三个cout正确输出字符串。然后,最后一个不输出字符串。注意这里的追加行。我所有的编程常识都告诉我现在应该填充vector,但是偷看一下它的大小,显示大小为0,这意味着没有放入QString。

url QVector是struct的一部分:

struct repo {
QString名称;//存储库名称。
QVector <QString> url;//服务器地址或镜像列表。

};

QString name是早期代码的一部分,它可以正常工作,与此问题无关。

我想不出append()或push_back()不能工作的任何理由。

arrayRepos的类型是什么,我猜它是某种Qt容器(QVector, QList等)。在这种情况下,当您需要引用时,arrayRepos.value (j)返回repo结构的副本,因此需要使用operator[]at(j)成员函数。

你能把arrayRepos.value ( j ).urls.append ( buffer3 );代码分解成单独的语句吗?

:

QVector<QString> tmpurls = arrayRepos.value ( j ).urls;
tmpurls.append ( buffer3 );