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