我想使用Qt5在可滚动列表中呈现一系列复杂数据。由于数据源是时间轴,我想懒得加载它 - 也就是说,我想使用QAbstractItemModel
的功能按需加载数据。视图将是只读的。
我可以使用自定义小部件在列表的每个单元格中显示数据吗?
到目前为止,我已经看到了一些建议:
QAbstractItemView->setIndexWidget()
;但是,因为我想懒洋洋地加载数据,所以在加载数据之前为所有索引创建和设置小部件似乎是不必要的。 QAbstractItemView->setItemDelegate()
与自定义QStyledItemDelegate
一起使用,以覆盖paint()
。结果看起来不错,但是小部件只是简单地呈现,而不是交互式(无法选择文本等)。答案 0 :(得分:0)
您可以使用QGraphicsScene
或使用QScrollArea
+自定义小部件来完成此操作。没有必要在任何地方使用QAbstractItemModel
。
如果您将为每个模型项使用自定义小部件,那么您可能会遇到性能和交互性问题。
Ofc,您可以编写自定义委托,但具有交互性的委托是非常复杂的主题 - 必须手动处理鼠标事件,绘制选择等。