1

我正在使用可编辑的 QTableView + QStandardItemModel。

在表格视图中编辑单元格时,我想在将新数据提交到表格视图时根据此特定单元格中的新输入数据做一些事情。

为此,我需要新的输入数据和当前模型索引(或列和行号)。我尝试了一些插槽,例如

virtual void closeEditor(QWidget * 编辑器,QAbstractItemDelegate::EndEditHint 提示)

虚拟 void commitData ( QWidget * editor )。

commitData 似乎是我需要的,但是,参数只是编辑器,我不知道如何在这个编辑器小部件中获取文本。我查看了 QTextEdit,但它不是 QWidget 的继承类。

我想知道是否有任何方法可以获取编辑器小部件的数据(文本)和轴(列、行)?

4

2 回答 2

2

我建议实现您自己的项目委托,继承QStandardItemDelegate(或QAbstractItemDelegate)。在那里你可以覆盖

void setModelData ( QWidget * editor, QAbstractItemModel * model, const QModelIndex & index ) const

只需进行自定义处理,然后调用QStandardItemDelegate::setModelData(...)以确保使用新编辑的数据更新您的模型。

于 2012-10-02T10:13:11.493 回答
1

每当项目的数据发生变化时,itemChanged(QStandardItem*)信号就会由 a 发出。QStandardItemModel

从给定的QStandardItem,您可以直接检索行和列。要获取显示的文本,请传递Qt::DisplayRole给项目的data()方法。

于 2012-10-02T06:54:39.013 回答