2

我们可以实现自己的委托来显示富文本或图像,但 ListView 只能打印静态项目。你不能把“真正的”物品放进去,你可以画它们。

因此,没有办法显示可点击的超链接、转推按钮或加载异步图像。想想Facebook 或 Twitter 的时间线列表视图。这就是我正在做的事情。

现在,我的解决方案是用 QML 编写我的列表视图。其他小部件仍然是原生 Qt 小部件。(我不喜欢非原生的纯 QML 用户界面。)

QML 在做这类工作时非常灵活。然后导出我的模型,最后在我的 QMainWindow 中放一个查看器。但是用两种编程语言进行编码并尝试与其他本地小部件进行通信确实很困难。

那么,显示动态元素的最佳方式是什么?

4

1 回答 1

3

MVC 框架不太适合这种工作。

为了正确地做到这一点,您需要为您需要显示的任何动态类型提供一个委托,然后提供一种外部机制来强制模型dataChanged(const QModelIndex& topLeft, const QModelIndex& bottomRight)在这些类型需要重绘时发出。交互式内容会变得更糟,因为您需要强制更新鼠标悬停以触发委托绘画。

对于这样的东西,你最好使用QGraphicsScene/View. 每个项目都可以自行处理,而不是依赖模型,您仍然只能获得必要的重绘(通过它的 BSP 结构),此外您还可以选择硬件加速。

于 2013-04-26T09:51:46.827 回答