与编辑器小部件交互' QTableView中的数据

时间:2012-10-02 05:06:38

标签: qt qt4 qwidget qtableview qtgui

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

在表格视图中编辑单元格时,我希望在将新数据提交到表格视图时,根据此特定单元格中的新输入数据执行

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

  

virtual void closeEditor(QWidget * editor,   QAbstractItemDelegate :: EndEditHint提示)

  

virtual void commitData(QWidget * editor)。

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

我想知道是否有办法获取编辑器小部件的数据(文本)和轴(列,行)?

2 个答案:

答案 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()方法。