【发布时间】:2013-09-20 20:17:18
【问题描述】:
我有一个 QListView,它的模型(源自 QAbstractItemModel)会根据 UI 中的某些标准定期更改。当视图本身认为在当前模型更新或模型更改时添加/删除了新行时,我希望收到通知。我需要此通知,以便我可以调用 setIndexWidget 并在特定列下添加自定义控件。我不想重复调用 setIndexWidget,因为小部件的数量很昂贵。所以每行一次是理想的。
我已经尝试过 rowsInserted/rowsAboutToBeRemoved 和 dataChanged,但如果设置到视图中的模型已经包含项目,则不会调用它们。
任何想法将不胜感激。
【问题讨论】:
-
您确定在填充模型时没有替换它(使用不同的 QAbstractItemModel 对象)导致您与 QListView 的初始连接丢失?
-
setModel 不应该处理所有这些连接吗?
-
如果您连接到 QListView 的信号,SetModel 将正确处理该问题。我试图找出问题的原因,我认为您直接连接到模型的信号然后更改模型。在这种情况下,除非您在更改模型后更新连接,否则您的信号将不再被发送。
标签: c++ qt qabstractitemmodel