使用来自std :: vector

时间:2015-09-16 06:40:47

标签: c++ qt user-interface

我有一堆存储在std :: vector中的对象。这些对象中的每一个都有一个name属性,我想在QListView中显示这些名称。

我已经阅读了有关ModelView架构的内容,听起来这样可以满足我的需求。我还读到有些人会创建一个带有名称的qstrings的新列表,并用它填充列表视图。但是,我想避免这样做,因为它引入了数据重复。

在QListView中显示源自std :: vector甚至是数组的项目的最佳实践是什么?

1 个答案:

答案 0 :(得分:0)

QListView需要一个模型。 在您的情况下,如果您的std :: vector是std :: vector,QStringListModel可以满足您的需求,但如果您使用更复杂的数据,则需要编写自己的模型(例如,通过继承QAbstractListModel,请参阅http://doc.qt.io/qt-5/qabstractlistmodel.html#subclassing )。 你的子类需要把你的std :: vector作为输入并存储它或将它转换成任何更合适的形式。

另一个选择是使用QListWidget而不是QListView并且(几乎)忘记模型。第一次尝试似乎更容易,但只要您想要更多功能(复杂数据,管理数据持久性等),它就不够了。