我已经用自己的数据抽象方案编写了一个角落,这导致我的视图中需要editorOpened(QModelIndex)和editorClosed(QmodelIndex)信号(几乎完全是QTableView)。
原因是我的数据类具有在编辑期间需要阻止/禁用的自动行为,然后在之后重新启用。
起初我曾尝试使用自定义委托进行尝试,但由于以下几个原因遇到问题:其中一个原因是使用自定义委托为每个项目提供相同的行为似乎有点过分,换句话说似乎它应该由视图本身对所有项目完成。第二个问题是代理似乎是const
,这阻止我在委托中设置数据对象的内部句柄。
查看视图方法,我找到了QAbstractItemView :: edit和QAbstractItemView :: closeEditor,它们是open()和closed()信号重新实现的完美候选者,但我需要一个特定项的索引/句柄正在编辑,我认为我不能从这些方法中获得......
此时我不知道还能做些什么。我很欣赏正确方向的任何提示或指示!感谢您的阅读
答案 0 :(得分:1)
我自己解决了......
我发现QAbstractItemDelegate :: editorEvent是非const的(我以前读过文档的时候一定不像我想的那样)。
我能够在此方法中的自定义委托中设置一个内部句柄,这使我可以简单地创建一个插槽来完成我在关闭时所需的操作,并将closeEditor(QWidget *,QAbstractItemDelegate :: EndEditHint)信号连接到它