我有这个表视图,其中我在3列上添加不同的项目。这些项目是可编辑的,因此我可以直接在视图中修改它们。
bool ClothoidTableModel::setData(const QModelIndex &index, const QVariant &value, int role) { if (index.isValid() && role == Qt::EditRole) { int row = index.row(); ClothoidCurve p = listOfCurves.value(row); if (index.column() == 0) p.length = value.toFloat(); else if (index.column() == 1) p.startCurvature = value.toFloat(); else if (index.column() == 2) p.endCurvature = value.toFloat(); else return false; listOfCurves.replace(row, p); emit(dataChanged(index, index)); return true; } return false; }
上面的方法在我的表模型中声明,当我添加和修改表中的数据时都会调用它。
我只想在修改表格中的项目时发送信号。我怎么能这样做?有没有办法区分添加和修改?
答案 0 :(得分:0)
您想知道差异的方式和地点?行为良好的模型在添加新数据之前和之后会发出rowsAboutToBeInserted和rowsInserted。我想(虽然我不确定)新行的数据设置应该在这些调用之间进行。无论如何,它值得一试。否则,您可能能够跟踪上次插入的行,并使用它来区分“添加”和“编辑”。这可能是不完美的,但可能涵盖了大多数用例。