Ottenere il testo da un QListView
Domanda
Ho un puntatore ad un terzo oggetto partito QListView
, che è semplicemente visualizzando righe di testo. Qual è il modo migliore di ottenere una sospensione di quella stringa di testo?
Soluzione
Il modello, accessibile da QListView::model()
, tiene gli elementi. Si può fare qualcosa di simile:
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() ;
}
Si parla anche che si desidera ottenere le stringhe aggiornati quando il testo è scritto - è possibile farlo collegando il segnale dataChanged()
del modello per la funzione che estrae le stringhe. Vedere QAbstractItemModel::dataChanged()
.
Altri suggerimenti
Si può chiedere l'oggetto QListView per la sua QModelIndex radice e l'uso che per scorrere le diverse voci utilizzando i metodi / bambini di pari livello. È possibile accedere al testo associato a ogni indice chiamando il metodo dei dati sull'indice con il ruolo specificato come Qt :: DisplayRole.
Per maggiori dettagli vedere la seguente documentazione:
QAbstractItemView - classe genitore a QListView