我想知道用户何时完成了QTableView项目的编辑,所以我检查了所有可用的信号,但我只找到了在编辑之前会发出的信号。
那么,我现在应该做什么呢?
运行Qt 4.8.4
发布于 2013-04-29 17:32:58
由于您QTableView将附加一个模型,因此请连接到其信号,
例如void QStandardItemModel::itemChanged ( QStandardItem * item ) [signal]
或者,更一般地说:
void QAbstractItemModel::dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight )
您还可以连接到selection model信号。
通常,当你编辑完一个项目时,焦点会切换到下一个,所以selectionmodel会触发currentChanged,但这不是通用的。
发布于 2015-10-12 19:46:57
只有在QAbstractItemDelegate中才能找到关于已完成编辑的真实信号。这是closeEditor()信号。如果用户不更改单元格中的任何内容,则来自模型的所有其他信号将不起作用,但每次编辑完成时,委托都会关闭。就像医生说的:
当用户使用指定的编辑器编辑完项目时,会发出此信号。
该提示为代理提供了一种在编辑完成后影响模型和视图行为的方法。它向这些组件指示下一步应该执行什么操作,以便为用户提供舒适的编辑体验。例如,如果指定了EditNextItem,则视图应使用委托来打开模型中下一项的编辑器。
用法:
connect(ui->tableView->itemDelegate(),SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)),SLOT(someSlot()));https://stackoverflow.com/questions/16272872
复制相似问题