2009-03-22 15 views
1

J'ai le code suivant:QSortFilterProxyModel.mapToSource se bloque. Pas d'info pourquoi

proxy_index = self.log_list.filter_proxy_model.createIndex(index, COL_REV) 
model_index = self.log_list.filter_proxy_model.mapToSource(proxy_index) 
revno = self.log_list.model.data(model_index,QtCore.Qt.DisplayRole) 
self.setEditText(revno.toString()) 

Le code est écrasé sur la deuxième ligne. Il n'y a aucune exception soulevée. Aucune trace en arrière. Pas d'avertissement. Comment puis-je réparer ça?

Répondre

1

Il se peut que vous utilisiez incorrectement la méthode createIndex() du modèle proxy. Généralement, la méthode createIndex() est appelée dans le cadre de l'implémentation de la méthode index() d'un modèle.

Avez-vous essayé d'appeler la méthode index() du modèle de proxy pour obtenir un index proxy puis le mapper à la source?

Peut-être pourriez-vous montrer le code en contexte ou expliquer ce que vous essayez de faire.

0

J'ai rencontré le même problème, mais heureusement, en utilisant la méthode index() au lieu de createIndex() comme le recommande David, c'est magique. En général, c'est une mauvaise idée de jouer avec le pointeur interne de QModelIndex en dehors de la méthode index(). Même lorsque vous utilisez votre propre modèle autour du pointeur interne conduit souvent à un comportement inattendu puisque le code Qts View est assez obscur pour l'utilisateur.