L'obtention d'un texte QListView
Question
J'ai un pointeur à un tiers objet QListView
, qui est simplement affiche des lignes de texte. Quelle est la meilleure façon d'obtenir une prise de cette chaîne de texte?
La solution
Le modèle, accessible par QListView::model()
, détient les éléments. Vous pouvez faire quelque chose comme ceci:
QListView* view ; // The view of interest
QAbstractItemModel* model = view->model() ;
QStringList strings ;
for ( int i = 0 ; i < model->rowCount() ; ++i )
{
// Get item at row i, col 0.
strings << model->index( i, 0 ).data( Qt::DisplayRole ).toString() ;
}
Vous mentionnez également que vous souhaitez obtenir les chaînes mises à jour lorsque le texte est écrit - vous pouvez le faire en connectant le signal dataChanged()
du modèle à votre fonction qui extrait les chaînes. Voir QAbstractItemModel::dataChanged()
.
Autres conseils
Vous pouvez demander à l'objet QListView pour son QModelIndex racine et l'utiliser pour parcourir les différentes entrées en utilisant les méthodes de frères et soeurs / enfants. Vous pouvez accéder au texte associé à chaque index en appelant la méthode des données sur l'indice du rôle spécifié comme Qt :: DisplayRole.
Pour plus de détails, voir les documents suivants:
QAbstractItemView - classe parent QListView