2011-09-13 3 views
0

J'ai cette vue de table dans laquelle j'ajoute différents articles sur 3 colonnes. Les éléments sont modifiables, donc je peux les modifier directement dans la vue.Comment détecter lorsqu'un élément de la vue de table a été modifié?

 

    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; 
    } 

La méthode ci-dessus est déclarée dans mon modèle de table et il est appelé à la fois quand j'ajoute et quand je modifier les données du tableau.

Je voudrais envoyer un signal seulement quand je modifie les articles dans le tableau. Comment pourrais-je faire cela? Existe-t-il un moyen de différencier l'ajout et la modification?

Répondre

0

Comment et où voulez-vous connaître la différence? Les modèles bien élevés émettent rowsAboutToBeInserted et rowsInserted avant et après l'ajout de nouvelles données. Je pense (bien que je ne suis pas sûr) que le réglage des données pour les nouvelles lignes devrait se produire entre ces appels. Ça vaut le coup, de toute façon. Sinon, vous pourriez être en mesure de suivre les lignes qui ont été insérées en dernier, et l'utiliser pour faire la distinction entre "ajouter" et "éditer". Ce serait imparfait, mais couvre probablement la plupart de vos cas d'utilisation.

Questions connexes