2009-07-28 5 views

ответ

4

Модели, доступной по QListView::model(), держит деталь. Вы можете сделать что-то вроде этого:

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

Вы также упомянуть, где вы хотели бы получить обновленные строки, когда текст написан - вы можете сделать это путем подключения dataChanged() сигнала в модели вашей функции, которая извлекает строку. См. QAbstractItemModel::dataChanged().

+0

это право? QObject :: connect (model, SIGNAL (dataChanged (QModelIndex, QModelIndex)), client_, SLOT (onText())) где client_ - это класс, полученный из QObject, а onText объявляется в общедоступных слотах. –

+0

Да, это идея. Если ваша подпись onText() также соответствует элементам dataChanged(), вы сможете прокручивать только по индексам, по которым данные изменились, а не по всему списку. – swongu

+0

это моя строка: QObject :: connect (model, SIGNAL (dataChanged (const QModelIndex, const QModelIndex)), client_, SLOT (onText (const QModelIndex, const QModelIndex))); возвращает true, но я не вижу cout, который я вставляю в функцию onText. Есть идеи? –

3

Вы можете спросить объект QListView для его корневого QModelIndex и использовать его для итерации по различным записям с использованием методов sibling/children. Вы можете получить доступ к тексту, связанному с каждым индексом, вызвав метод данных по индексу с ролью, указанной как Qt :: DisplayRole.

Для получения более подробной информации обратитесь к следующей документации:

QAbstractItemView - родительский класс QListView

QModelIndex

+0

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

+0

спасибо, плохо попробуйте. Есть ли слот, к которому я могу подключиться, чтобы сделать это, когда на него будет написан новый текст? –

 Смежные вопросы

  • Нет связанных вопросов^_^