Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ (Qt)如何在视图中实现EditorOpen(索引)和editorClosed(索引)信号_C++_Qt_Model_Qtableview - Fatal编程技术网

C++ (Qt)如何在视图中实现EditorOpen(索引)和editorClosed(索引)信号

C++ (Qt)如何在视图中实现EditorOpen(索引)和editorClosed(索引)信号,c++,qt,model,qtableview,C++,Qt,Model,Qtableview,我用我的数据抽象方案将自己编码到一个角落中,这导致我在视图中需要editorOpened(QModelIndex)和editorClosed(QModelIndex)信号(QTableView几乎是唯一的) 原因是我的数据类具有自动行为,需要在编辑期间阻止/禁用,然后再重新启用 起初,我想尝试使用自定义委托来执行此操作,但遇到了一些问题,原因有两个:一个是使用自定义委托为每个项目提供相同的行为似乎有点过分,换句话说,似乎应该由视图本身为所有项目执行此操作。第二个问题是委托似乎是const,这使我

我用我的数据抽象方案将自己编码到一个角落中,这导致我在视图中需要editorOpened(QModelIndex)和editorClosed(QModelIndex)信号(QTableView几乎是唯一的)

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

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

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


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

我自己解决了这个问题

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

我能够在这个方法中的自定义委托中设置一个内部句柄,这允许我简单地创建一个插槽来完成关闭时所需的操作,并将closeEditor(QWidget*,QBStractItemDelegate::EndEditHint)信号连接到它