Bonjour
Celà fait un petit moment que je bricole avec Qt et j'aurai aimé pouvoir récupérer la modification d'une cellule car actuellement tout ce que je fais, ce solde par des échecs. Pour infos, j'utilise une QTableView
Version imprimable
Bonjour
Celà fait un petit moment que je bricole avec Qt et j'aurai aimé pouvoir récupérer la modification d'une cellule car actuellement tout ce que je fais, ce solde par des échecs. Pour infos, j'utilise une QTableView
Salut,
Donc si j'ai bien compris, tu veux savoir la nouvelle valeur d'une cellule qui vient d'être éditée par l'utilisateur, ou même programmatiquement ?
Si oui, il y a un signal pour ça sur QAbstractItemModel :
void QAbstractItemModel::dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight )
Tu utilises un QTableView, donc tu as certainement un QTableModel, et bien tu connectes un slot sur ce signal du model, et ton slot sera appelé si il y a eu une modification.
Ensuite avec les index, tu peux avoir la nouvelle valeur en utilisant la méthode data du model, avec le rôle que tu souhaites.
Pour plus d'infos, va voir la doc du signal.
Merci pour ta réponse. Je vais regarder ça d'ici un moment
En fait, je ne cherchais pas au bon endroit. Je cherchais plutôt un signal du coté de QTableView et classe mère alors qu'elles ne servent qu'à "afficher". J'aurai du me douter qu'il faille chercher plutôt sur le modèle.
Sinon, oui, j'utilise ce que tu as indiqué pour faire tout ça. Par contre, j'ai une question différente du sujet à savoir qu'elles sont les distinctions entre QTableView et QTableWidget car je n'arrive pas bien à saisir les diffs
J'utilise QStandardItemModel et j'essai de connecter dataChanged() de QAbstractItemModel sur un slot sans aucun succès :cry:
J'ai tout le temps :
Je connecte le signal comme ceci :Code:
1
2 Object::connect: No such signal QStandardItemModel::dataChanged(&topLeft, &bottomRight) Object::connect: (receiver name: 'MainWindow')
Je précise que modele est un QStandardItemModelCode:connect(modele, SIGNAL(dataChanged(&topLeft, &bottomRight)), this, SLOT(action()));
j'ai trouvé. Il fallait mettre SIGNAL(QModelIndex, QModelIndex) tout bêtement