4

用户开始和结束小部件单元格编辑时是否发出任何信号(我在文档中找不到任何内容)QTableView

我想从表模型中执行一些功能,然后用户开始编辑 eny 单元格并在用户结束编辑时执行另一个功能。我怎样才能做到这一点?

4

4 回答 4

5

用户开始/结束编辑时的操作可以通过实现您自己的Delegate来完成。

QAbstractItemModel 中还有dataChanged信号。

于 2011-03-15T11:05:52.703 回答
1

dataChanged 信号的问题在于,它在以编程方式更改数据(setData)时也会发出。如果程序调用 setData(),并且不应该触发 slot,那么唯一的解决方案是确实实现自定义委托。

QAbstractItemView 具有虚拟方法 commitData 和 closeEditor 但它们不将索引作为参数,而且我不能 100% 确定 currentIndex() 总是正确的......(确保 QAIV 不依赖它,因为持久编辑器,所以它有一个内部哈希)。

于 2015-09-07T17:56:08.767 回答
0

就像上面石墨建议的那样,我通常在我的模型中使用 dataChanged,通常是 QSqlTableModel,来找出编辑何时结束。但我同意在 QTableView 本身中为更详细的用户操作提供信号是有意义的。

connect(model,SIGNAL(dataChanged(QModelIndex,QModelIndex)),this,SLOT(updatePlot()));
于 2011-08-27T10:28:39.387 回答
0

我将从 QTableView 派生一个类并覆盖函数 selectionChanged 以在用户开始编辑单元格时实现特定行为,并覆盖函数 dataChanged 以在修改单元格后实现特定行为。

于 2011-03-15T08:38:09.493 回答