2011-09-13 19 views
0

私は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

どのように違いについて知りたいですか?よく振る舞うモデルは、新しいデータが追加される前後にrowsAboutToBeInsertedrowsInsertedを放出します。私は新しい行のためのデータの設定がこれらの呼び出しの間に起こるはずだとは思いますが(確かには分かりませんが)それは、とにかくショットの価値がある。それ以外の場合は、最後に挿入された行を追跡し、それを使用して「追加」と「編集」を区別することができます。それは不完全ですが、おそらくほとんどのユースケースをカバーしています。

関連する問題