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