0

我想知道在 QlistView 中显示矢量内容的最佳方式是什么。我对 QT 相当陌生,因此这个问题。矢量内容变化非常快,因此速度至关重要。我知道你可以通过设置模型在 QT 中设置模型

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

我将如何使用向量或双端队列类型做类似的事情。

4

2 回答 2

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 来显着优化......

于 2013-04-02T19:28:38.600 回答
1

您需要继承 QAbstractListModel。这将使您可以使用所需的任何数据结构。为此,您需要实现几个纯虚函数,rowCount()并且data(). Qt 的模型/视图编程框架很好,但需要一些时间来适应,阅读他们的指南可能是个好主意。

于 2013-04-02T19:16:25.090 回答