Ho un puntatore a un oggetto di terze parti QListView
, che sta semplicemente visualizzando righe di testo. Qual è il modo migliore per afferrare quella stringa di testo?Ottenere testo da QListView
risposta
Il modello, accessibile da QListView::model()
, detiene le voci. 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 si desidera ottenere le stringhe aggiornati quando il testo è scritto - è possibile farlo collegando il segnale del modello dataChanged()
alla funzione che estrae le stringhe. Vedi QAbstractItemModel::dataChanged()
.
È possibile chiedere all'oggetto QListView il relativo QModelIndex radice e utilizzarlo per scorrere le varie voci utilizzando i metodi fratello/figlio. È possibile accedere al testo associato a ciascun indice chiamando il metodo dati sull'indice con il ruolo specificato come Qt :: DisplayRole.
Per maggiori dettagli si veda la seguente documentazione:
QAbstractItemView - classe padre per QListView
e http://doc.trolltech.com/4.5/qvariant.html#toString –
grazie, non provarlo. C'è uno slot a cui posso collegarmi per farlo quando viene scritto un nuovo testo? –
è giusto? QObject :: connect (modello, SIGNAL (dataChanged (QModelIndex, QModelIndex)), client_, SLOT (onText())) dove client_ è una classe derivante da QObject e onText è dichiarato in spazi pubblici. –
Sì, questa è l'idea. Se la tua firma onText() corrisponde anche a quelle dataChanged(), sarai in grado di eseguire il ciclo solo attraverso gli indici su cui i dati sono stati modificati, piuttosto che l'intero elenco. – swongu
questa è la mia riga: QObject :: connect (modello, SIGNAL (dataChanged (const QModelIndex, const QModelIndex)), client_, SLOT (onText (const QModelIndex, const QModelIndex))); restituisce true, ma non vedo il cout che ho inserito nella funzione "onText". Qualche idea? –