Как определить, когда элемент в табличном представлении был изменен? - PullRequest
0 голосов
/ 13 сентября 2011

У меня есть это табличное представление, в котором я добавляю различные элементы в 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;
    }

Вышеуказанный метод объявлен в моей табличной модели и вызывается как при добавлении, так и при изменении данных в таблице.

Я хотел бы отправлять сигнал только тогда, когда я изменяю элементы в таблице. Как я могу это сделать?Есть ли способ отличить дополнение от модификации?

1 Ответ

0 голосов
/ 15 сентября 2011

Как и где вы хотите узнать о разнице?Модели с хорошим поведением генерируют rowAboutToBeInserted и rowInserted до и после добавления новых данных.Я думаю (хотя я не уверен), что установка данных для новых строк должна происходить между этими вызовами.В любом случае, стоит попробовать.В противном случае вы сможете отслеживать строки, которые были вставлены последними, и использовать это для различения между «добавлением» и «редактированием».Это было бы несовершенно, но, вероятно, охватывало бы большинство ваших случаев использования.

...