首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >视图中的qt永久显示委托

视图中的qt永久显示委托
EN

Stack Overflow用户
提问于 2018-10-22 19:09:52
回答 1查看 1.5K关注 0票数 1

如何使用QStyledItemDelegate / QItemDelegate永久显示复杂的小部件,即处理Qt.DisplayRole,而不仅仅是Qt.EditRole

文档没有使用The ()..。但这只是复杂的方式!例如,在QTreeView单元格内呈现一个QTableViewQTableVeiw

QAbstractItemView.setIndexWidget(),但这不是一个好主意,因为它只用于显示静态内容(静态模型的乐趣何在?)

备注

我在另一个帖子中找到了部分答案,但它只是答案的一小部分,所以我认为它需要一个带有适当问题的新帖子。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-22 19:09:52

关键是使用QAbstractItemView.openPersistentEditor()始终将单元格保持在编辑模式中。

一些额外的关键要素

  1. 需要为使用委托的单元格提供Qt.EditRole标志。
  2. 只要编辑器小部件的大小发生变化,就需要调用QStyledItemDelegate.sizeHintChanged.emit(index)
  3. 实现QStyledItemDelegate.sizeHint()既棘手又繁琐(或者,假设您在QStyledItemDelegate.createEditor() 期间保存了编辑器对内部指针的引用,则可以执行QStyledItemDelegate.createEditor())。

注意事项

应该指出的是,打开编辑器是昂贵的,所以如果您有数千个索引,并且它们都是一次加载的,那么它可能需要一段时间。减轻这一问题的方法有很多:

  1. 使用线程增量加载模型
  2. 使用Qt的fetchMore()机制
  3. 增量地调用openPersistentEditor (使用计时器,或当它们第一次进入视图时)
  4. 在父节点展开时调用openPersistentEditor,在父节点折叠时调用closePersistentEditor,并可能限制展开的使用--所有这些都在多个子节点上。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52936237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档