2009-07-28 24 views

Respuesta

4

El modelo, con acceso por QListView::model(), contiene los elementos. Se puede hacer algo como esto:

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() ; 
} 

También menciona que le gustaría obtener las cuerdas actualizados cuando el texto está escrito - usted puede hacer esto mediante la conexión de la señal del modelo dataChanged() a la función que extrae las cadenas. Ver QAbstractItemModel::dataChanged().

+0

es esto ¿verdad? QObject :: connect (modelo, SIGNAL (dataChanged (QModelIndex, QModelIndex)), client_, SLOT (onText())) donde client_ es una clase derivada de QObject, y onText se declara en espacios públicos. –

+0

Sí, esta es la idea. Si su firma onText() también coincide con dataChanged(), podrá realizar un bucle solo a través de los índices en los que cambiaron los datos, en lugar de la lista completa. – swongu

+0

esta es ahora mi línea: QObject :: connect (modelo, SIGNAL (dataChanged (const QModelIndex, const QModelIndex)), client_, SLOT (onText (const QModelIndex, const QModelIndex))); devuelve verdadero, pero no veo la función que puse en la función "onText". ¿Algunas ideas? –

3

Puede preguntar al objeto QListView por su raíz QModelIndex y usarlo para iterar sobre las diferentes entradas utilizando los métodos hermanos/hijos. Puede acceder al texto asociado a cada índice llamando al método de datos en el índice con el rol especificado como Qt :: DisplayRole.

Para más detalles ver la siguiente documentación:

QAbstractItemView - clase padre a QListView

QModelIndex

+0

y http://doc.trolltech.com/4.5/qvariant.html#toString –

+0

gracias, lo intentaré. ¿Hay algún espacio al que pueda conectar para hacer esto cuando se escribe un nuevo texto? –

Cuestiones relacionadas