我想知道在QlistView中显示向量内容的最佳方式是什么。我对QT很新,因此问题。矢量内容变化非常快,因此速度至关重要。我知道您可以在QT中设置模型,例如设置模型
QStringList list;
list << "item1" << "item2" << "item3" << "item4" << "item5";
ui.listView->setModel(new QStringListModel(list));
我如何使用vector或deque类型执行类似的操作。
答案 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可能是一个好主意。