c++ - (Qt) 如何在 View 中实现 editorOpened(index) 和 editorClosed(index) 信号

标签 c++ qt model qtableview

我用我的数据抽象方案将自己编码成一个角落,这导致我在我的 View 中需要 editorOpened(QModelIndex) 和 editorClosed(QmodelIndex) 信号(几乎完全是 QTableView)。

原因是我的数据类具有自动行为,需要在编辑期间阻止/禁用,然后再重新启用。

起初我想尝试用自定义委托(delegate)来做,但遇到了几个原因:一个是使用自定义委托(delegate)为每个项目提供相同的行为似乎有点过分,换句话说似乎应该由 View 本身对所有项目完成。第二个问题是委托(delegate)似乎是 const,这使我无法在委托(delegate)中为数据对象设置内部句柄。

查看 View 方法,我发现 QAbstractItemView::edit 和 QAbstractItemView::closeEditor 非常适合使用 opened() 和 closed() 信号重新实现,但是我需要特定项目的索引/句柄正在编辑,我认为我无法从这些方法中获得...

此时我不知道我还能做什么。如果有任何正确方向的提示或指示,我将不胜感激!感谢阅读

最佳答案

我自己解决了...

我发现 QAbstractItemDelegate::editorEvent 是非常量的(我之前阅读文档时一定没有像我想的那样仔细查看)。

我能够在这个方法中的自定义委托(delegate)中设置一个内部句柄,这让我可以简单地创建一个槽来做我在关闭时需要做的事情,并将 closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint) 信号连接到

关于c++ - (Qt) 如何在 View 中实现 editorOpened(index) 和 editorClosed(index) 信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11371026/

相关文章:

c++ - x264 DirectShow 过滤器的 CLSID

c++ - 为自定义类 C++ 实现哈希

c++ - VexCL : set values common to all vector elements

ruby-on-rails - 如何连接两个 Ruby on Rails 模型中的列?

c# - Ajax.BeginFrom 验证模型

c++ - 重载模板和非模板函数

c++ - 如何检测 Qt 中的用户不活动?

c++ - 使用QImage(qt)生成文字图片

c++ - mac os X 上的 qmake 子目录模板

mysql - 如何从 Rails 2 中不包含特定项目的多对多关系中选择特定记录?