什么是QTableView项目的“编辑完成”信号?

时间:2013-04-29 06:57:58

标签: qt4 qtableview

我想知道用户何时完成了QTableView项目的编辑,所以我检查了所有可用的信号,但我只找到了在编辑之前会发出的信号。

那么,我现在该怎么办?

运行Qt 4.8.4

2 个答案:

答案 0 :(得分:6)

由于您的QTableView将附加模型,请连接其信号,

例如 void QStandardItemModel::itemChanged ( QStandardItem * item ) [signal]

或者更一般地说:

void QAbstractItemModel::dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight )

您也可以连接到selection model信号 通常,当您完成项目的编辑后,将焦点更改为下一个,因此选择模型将会触发 currentChanged但这不是一般的。

答案 1 :(得分:6)

关于完成编辑的真实信号,您只能在QAbstractItemDelegate中找到。它是closeEditor()信号。如果用户不更改单元格中的任何内容,则模型中的所有其他信号将不起作用,但每次编辑完成时委托都会关闭。正如医生所说:

  

用户完成项目编辑后会发出此信号   使用指定的编辑器。

     

提示为委托提供了一种影响模型的方式   编辑完成后视图和视图的行为。它表明了这些   组件接下来要执行的操作是什么   为用户提供舒适的编辑体验。例如,如果   指定了EditNextItem,视图应该使用委托来打开   编辑模型中的下一个项目。

用法:

connect(ui->tableView->itemDelegate(),SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)),SLOT(someSlot()));