2009-07-28 11 views

Odpowiedz

4

modelu dostępnego przez QListView::model(), posiada elementy. Można zrobić coś takiego:

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

też wspomnieć chcieliby Państwo uzyskać aktualizowane struny, gdy tekst jest napisane - można to zrobić poprzez podłączenie modelu dataChanged() sygnał do funkcji, która wydobywa sznurki. Zobacz QAbstractItemModel::dataChanged().

+0

czy to prawda? QObject :: connect (model, SIGNAL (dataChanged (QModelIndex, QModelIndex)), client_, SLOT (onText())) gdzie client_ jest klasą wywodzącą się z QObject, a onText jest zadeklarowany jako publiczny. –

+0

Tak, to jest pomysł. Jeśli twój podpis onText() również pasuje do danych dataChanged(), będziesz mógł przechodzić tylko przez indeksy, w których zmieniły się dane, a nie całą listę. – swongu

+0

to jest teraz moja linia: QObject :: connect (model, SIGNAL (dataChanged (const QModelIndex, const QModelIndex)), client_, SLOT (onText (const QModelIndex, const QModelIndex))); zwraca true, ale nie widzę cout wstawić funkcję "onText". Jakieś pomysły? –

3

Możesz poprosić obiekt QListView o jego główny QModelIndex i użyć go do powtórzenia różnych wpisów za pomocą metod rodzeństwa/dzieci. Dostęp do tekstu powiązanego z każdym indeksem można uzyskać, wywołując metodę danych w indeksie z rolą określoną jako Qt :: DisplayRole.

Aby uzyskać więcej informacji zobacz następujące dokumenty:

QAbstractItemView - klasa rodzic QListView

QModelIndex

+0

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

+0

dzięki, chory, spróbuj. Czy jest jakiś slot, z którym mogę się połączyć, aby to zrobić, gdy zostanie do niego napisany nowy tekst? –

Powiązane problemy