QTableView:如何在开始/结束编辑时执行某些操作?

时间:2011-03-15 07:54:03

标签: c++ qt qtableview

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

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

4 个答案:

答案 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()));