我有一个小类“Dictionary”,其中包含std :: vector中的所有数据。我想在QT应用程序中显示这些数据。所以我做了一个小小的研究,我发现我应该像这样使用ListView:如何在QT中正确显示std :: vector?
ui->WordList->setModel(new QStringListModel(QList<QString>::fromVector
(dict->getQVector())));
但是,这看起来像真的显示。每次向矢量添加新元素时,我都必须更新ListView的模型。而且我还需要添加函数到我的Dictionary类来获得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重写我的Dictionary类吗?如果是这样,如何以方便的方式使用ListView(或者别的东西)显示QVector? 在此先感谢。
http://stackoverflow.com/questions/32084336/how-to-properly-add-strings-to-qlistwidgets –
你可以编写一个定制的QAbstractListModel子类,它直接返回std :: vector的数据 –