用户开始和结束小部件单元格编辑时是否发出任何信号(我在文档中找不到任何内容)QTableView
?
我想从表模型中执行一些功能,然后用户开始编辑 eny 单元格并在用户结束编辑时执行另一个功能。我怎样才能做到这一点?
用户开始和结束小部件单元格编辑时是否发出任何信号(我在文档中找不到任何内容)QTableView
?
我想从表模型中执行一些功能,然后用户开始编辑 eny 单元格并在用户结束编辑时执行另一个功能。我怎样才能做到这一点?
用户开始/结束编辑时的操作可以通过实现您自己的Delegate来完成。
QAbstractItemModel 中还有dataChanged信号。
dataChanged 信号的问题在于,它在以编程方式更改数据(setData)时也会发出。如果程序调用 setData(),并且不应该触发 slot,那么唯一的解决方案是确实实现自定义委托。
QAbstractItemView 具有虚拟方法 commitData 和 closeEditor 但它们不将索引作为参数,而且我不能 100% 确定 currentIndex() 总是正确的......(确保 QAIV 不依赖它,因为持久编辑器,所以它有一个内部哈希)。
就像上面石墨建议的那样,我通常在我的模型中使用 dataChanged,通常是 QSqlTableModel,来找出编辑何时结束。但我同意在 QTableView 本身中为更详细的用户操作提供信号是有意义的。
connect(model,SIGNAL(dataChanged(QModelIndex,QModelIndex)),this,SLOT(updatePlot()));
我将从 QTableView 派生一个类并覆盖函数 selectionChanged 以在用户开始编辑单元格时实现特定行为,并覆盖函数 dataChanged 以在修改单元格后实现特定行为。