如何使用QStyledItemDelegate
/ QItemDelegate
永久显示复杂的小部件,即处理Qt.DisplayRole
,而不仅仅是Qt.EditRole
文档没有使用The ()..。但这只是复杂的方式!例如,在QTreeView
单元格内呈现一个QTableView
或QTableVeiw
。
有QAbstractItemView.setIndexWidget()
,但这不是一个好主意,因为它只用于显示静态内容(静态模型的乐趣何在?)
备注
我在另一个帖子中找到了部分答案,但它只是答案的一小部分,所以我认为它需要一个带有适当问题的新帖子。
发布于 2018-10-22 19:09:52
关键是使用QAbstractItemView.openPersistentEditor()
始终将单元格保持在编辑模式中。
一些额外的关键要素
Qt.EditRole
标志。QStyledItemDelegate.sizeHintChanged.emit(index)
。QStyledItemDelegate.sizeHint()
既棘手又繁琐(或者,假设您在QStyledItemDelegate.createEditor()
期间保存了编辑器对内部指针的引用,则可以执行QStyledItemDelegate.createEditor()
)。注意事项
应该指出的是,打开编辑器是昂贵的,所以如果您有数千个索引,并且它们都是一次加载的,那么它可能需要一段时间。减轻这一问题的方法有很多:
fetchMore()
机制openPersistentEditor
(使用计时器,或当它们第一次进入视图时)openPersistentEditor
,在父节点折叠时调用closePersistentEditor
,并可能限制展开的使用--所有这些都在多个子节点上。https://stackoverflow.com/questions/52936237
复制相似问题