我正在使用可编辑的QTableView + QStandardItemModel。
在表格视图中编辑单元格时,我希望在将新数据提交到表格视图时,根据此特定单元格中的新输入数据执行。
为此,我需要新的输入数据和当前的模型索引(或列和行号)。 我尝试了一些插槽,如
virtual void closeEditor(QWidget * editor, QAbstractItemDelegate :: EndEditHint提示)
和
virtual void commitData(QWidget * editor)。
commitData似乎是我需要的,但是,参数只是编辑器,我无法弄清楚如何获取此编辑器小部件中的文本。 我看了QTextEdit,但它不是QWidget的继承类。
我想知道是否有办法获取编辑器小部件的数据(文本)和轴(列,行)?
答案 0 :(得分:2)
我建议您实施自己的项目委托,继承QStandardItemDelegate
(或QAbstractItemDelegate
)。在那里你可以覆盖
void setModelData ( QWidget * editor, QAbstractItemModel * model, const QModelIndex & index ) const
只需进行自定义处理,然后致电QStandardItemDelegate::setModelData(...)
以确保使用新编辑的数据更新模型。
答案 1 :(得分:1)
只要项目的数据发生变化,QStandardItemModel
就会发出itemChanged(QStandardItem*)
信号。
从给定的QStandardItem
,您可以直接检索行和列。要获取显示的文本,请将Qt::DisplayRole
传递给项目的data()
方法。