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