在QTableView中与编辑器小部件的数据进行交互



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

在编辑表格视图中的单元格时,我想在将新数据

提交到表格视图中时,根据此特定单元格中的新输入数据执行一些操作。

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

虚拟无效关闭编辑器(QWidget * 编辑器, QAbstractItemDelegate::EndEditHint hint

Virtual void commitData ( QWidget * editor ).

commitData 似乎是我需要的,但是,参数只是编辑器,我无法弄清楚如何在此编辑器小部件中获取文本。我看了QTextEdit,但它不是QWidget的继承类。

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

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

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

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

每当项目的数据更改时,QStandardItemModel都会发出itemChanged(QStandardItem*)信号。

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

相关内容

  • 没有找到相关文章

最新更新