2011-09-13 4 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을 방출합니다. 나는 (비록 확실하지는 않지만) 새로운 호출에 대한 데이터 설정이 이러한 호출간에 발생해야한다고 생각할 것이다. 어쨌든 그것은 가치가 있습니다. 그렇지 않으면 마지막으로 삽입 된 행을 추적하여 "추가"와 "편집"을 구별 할 수 있습니다. 불완전하지만 대부분의 사용 사례를 다룰 것입니다.

관련 문제