0

我有这个表格视图,在其中我在 3 列上添加了不同的项目。这些项目是可编辑的,因此我可以直接在视图中修改它们。

    bool ClothoidTableModel::setData(const QModelIndex &index, const QVariant &value, int 角色)
    {
        if (index.isValid() && 角色 == Qt::EditRole) {
            int 行 = index.row();

            ClothoidCurve p = listOfCurves.value(row);

            if (index.column() == 0)
                p.length = value.toFloat();            
            否则 if (index.column() == 1)
                p.startCurvature = value.toFloat();
            否则 if (index.column() == 2)
                p.endCurvature = value.toFloat();
            别的
                返回假;

            listOfCurves.replace(row, p);
            发射(dataChanged(索引,索引));

            返回真;
        }

        返回假;
    }

上面的方法是在我的表模型中声明的,当我添加和修改表中的数据时都会调用它。

我只想在修改表中的项目时发送信号。我该怎么做?有没有办法区分添加和修改?

4

1 回答 1

0

您想如何以及在哪里了解差异?表现良好的模型在添加新数据之前和之后发出rowsAboutToBeInsertedrowsInserted 。我认为(尽管我不确定)新行的数据设置应该在这些调用之间进行。无论如何,值得一试。否则,您可能能够跟踪最后插入的行,并使用它来区分“添加”和“编辑”。这将是不完美的,但可能涵盖了您的大部分用例。

于 2011-09-14T20:10:23.897 回答