5

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

那么,我现在该怎么办?

运行 Qt 4.8.4

4

2 回答 2

8

由于您的 QTableView 将附加一个模型,连接到它的信号,

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

或者,更一般地说:

无效 QAbstractItemModel::dataChanged (const QModelIndex & topLeft, const QModelIndex & bottomRight)

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

于 2013-04-29T09:32:57.623 回答
7

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

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

该提示为代理提供了一种在编辑完成后影响模型和视图行为的方式。它向这些组件指示下一步应该执行什么操作,以便为用户提供舒适的编辑体验。例如,如果指定了 EditNextItem,则视图应使用委托打开模型中下一项的编辑器。

用法:

connect(ui->tableView->itemDelegate(),SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)),SLOT(someSlot()));
于 2015-10-12T11:46:57.317 回答