在QListView中显示向量

时间:2013-04-02 17:45:40

标签: c++ qt vector

我想知道在QlistView中显示向量内容的最佳方式是什么。我对QT很新,因此问题。矢量内容变化非常快,因此速度至关重要。我知道您可以在QT中设置模型,例如设置模型

QStringList list;
list << "item1" << "item2" << "item3" << "item4" << "item5";
ui.listView->setModel(new QStringListModel(list));

我如何使用vector或deque类型执行类似的操作。

2 个答案:

答案 0 :(得分:4)

Matt Philips提到过,可以通过继承QAbstractListModel来完成。 但是,更简单的方法是使用内置的QList静态成员将QVector / std :: vector转换为QList:

ui.listView->setModel(new QStringListModel(QList<QString>::fromVector(yourQVector)));

ui.listView->setModel(new QStringListModel(QList<QString>::fromStdVector(yourStdVector)));

我怀疑由于转换会产生很高的开销,如果你可以通过子类化QAbstractListModel来显着优化......

答案 1 :(得分:1)

您需要继承QAbstractListModel。这将允许您使用所需的任何数据结构。为此,您需要实现几个纯虚函数rowCount()data()。 Qt的模型/视图编程框架很不错,但需要一些时间习惯,阅读他们的guide可能是一个好主意。