Mam wskaźnik do obiektu strony trzeciej QListView
, który po prostu wyświetla wiersze tekstu. Jaki jest najlepszy sposób na uzyskanie tego ciągu tekstowego?Uzyskiwanie tekstu z QListView
Odpowiedz
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()
.
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
i http://doc.trolltech.com/4.5/qvariant.html#toString –
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? –
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. –
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
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? –