我想知道用户何时完成编辑QTableView项目,所以我检查了所有可用的信号,但是我只发现了在编辑之前会发出的信号。什么是QTableView项目的“编辑完成”信号?
那么,我现在该怎么办?
运行的Qt 4.8.4
我想知道用户何时完成编辑QTableView项目,所以我检查了所有可用的信号,但是我只发现了在编辑之前会发出的信号。什么是QTableView项目的“编辑完成”信号?
那么,我现在该怎么办?
运行的Qt 4.8.4
由于您的QTableView中会附上一个模型,连接到它的信号,
如 void QStandardItemModel::itemChanged (QStandardItem * item) [signal]
,或者更一般地说:
void QAbstractItemModel::dataChanged (const QModelIndex & topLeft, const QModelIndex & bottomRight)
您也可以连接到selection model信号。
通常情况下,当你完成一个项目的编辑,焦点变成下一个,所以selectionmodel将激发 currentChanged但这不一般。
关于完成编辑的真实信号只能在QAbstractItemDelegate
中找到。信号是closeEditor()
。如果用户不更改单元格中的任何内容,则模型中的所有其他信号都不起作用,但编辑完成后每次都会关闭委托。正如doc所说:
当用户使用指定的编辑器完成编辑项目 时发出此信号。
该提示为委托人提供了一种方式,可以在编辑完成后影响模型 和视图的行为方式。它向这些 组件指示接下来应该执行什么动作来为用户提供舒适的编辑体验。例如,如果指定了 EditNextItem,则视图应使用委托在模型中的下一个项目上打开 编辑器。
用法:
connect(ui->tableView->itemDelegate(),SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)),SLOT(someSlot()));