Russian Qt Forum

Qt => Общие вопросы => Тема начата: iukash от Февраль 18, 2011, 18:10



Название: QAbstractItemModel -> QString
Отправлено: iukash от Февраль 18, 2011, 18:10
Я продалжаю раскуривать пример editabletreemodel, теперь я из файла считываю модель, правлю ее и хочу сохранить. Считываю актуальную модель в QAbstractItemModel а как теперь из model вытащить текст?
Цитировать
QAbstractItemModel *model = view->model();
QString str = model; //[COLOR="Red"]как?[/COLOR]


Название: Re: QAbstractItemModel -> QString
Отправлено: UVV от Февраль 18, 2011, 18:52
QAbstractItemModel::data() ?


Название: Re: QAbstractItemModel -> QString
Отправлено: iukash от Февраль 18, 2011, 21:09
QAbstractItemModel::data() ?
В data() надо передавать параметры, я не знаю что туда передать!
Цитировать
data( const QModelIndex & index, int role = Qt::DisplayRole )


Название: Re: QAbstractItemModel -> QString
Отправлено: Paullo от Февраль 18, 2011, 21:22
QModelIndex нужно получить из той же модели посредством функции index(), куда передаётся соответственно строка, колонка и родительский индекс. Если родительского элемента нету, то в качестве индекса передаётся пустой QModelIndex(), который считается корневым элементом всего дерева. Ещё в функцию data() надо передать роль, это которая второй параметр. Он по умолчанию Qt::DisplayRole, так его и оставь. Если не получится - попробуй Qt::EditRole. Обычно в DisplayRole хранится текст который должен читать пользователь, а в EditRole - некие данные из которых этот текст можно получить. Чаще всего они совпадают.


Название: Re: QAbstractItemModel -> QString
Отправлено: iukash от Февраль 18, 2011, 22:19
QModelIndex нужно получить из той же модели посредством функции index(), куда передаётся соответственно строка, колонка и родительский индекс. Если родительского элемента нету, то в качестве индекса передаётся пустой QModelIndex(), который считается корневым элементом всего дерева. Ещё в функцию data() надо передать роль, это которая второй параметр. Он по умолчанию Qt::DisplayRole, так его и оставь. Если не получится - попробуй Qt::EditRole. Обычно в DisplayRole хранится текст который должен читать пользователь, а в EditRole - некие данные из которых этот текст можно получить. Чаще всего они совпадают.

Спасибо огромное! Понял суть!