如何正确显示QT中的STD :: vector



我有小类"词典",其中我在std :: vector中包含所有数据。我想在QT应用程序中显示此数据。因此,我进行了一项小型研究,发现我应该使用这样的ListView:

ui->WordList->setModel(new QStringListModel(QList<QString>::fromVector
                                            (dict->getQVector())));

,但这看起来真的很显示。每次将新元素添加到向量时,我都必须更新ListView的模型。而且我还必须在字典类中添加函数才能获取qVector:

QVector<QString> getQVector() {
  QVector<QString> qv;
  for (size_t i = 0; i < container.size(); i++) {
      qv.push_back(QString::fromStdString((std::string)container[i]));
  }
  return qv;
  }

...这看起来也很慢。所以我有一个问题:我应该使用QTL重写我的字典类吗?如果是这样,如何以方便的方式使用ListView(或其他内容)显示QVECTOR?预先感谢。

在不知道您对字典类别的所有要求的情况下,我的建议是用qStringListModel替换内部std :: vector,然后将其设置为视图的模型。当您更改QStringListModel时,它将自动反映在您的视图中。

另外,通过从qabstractitemmodel将其划分为单词类模型。您仍然可以将std ::向量保持为内部数据结构,然后将"数据"one_answers" setData"方法从读取并写入std :: vector。

不知道您的字典的目的,无论是否已排序,是否包含重复的条目,等等,很难就适当的数据结构提出可靠的建议。

最新更新