Название: listWidget: как с каждой строкой хранить произвольный указатель? Отправлено: Fregloin от Май 08, 2011, 17:33 К примеру в Делфи у ListBox помимо Strings есть еще классная вещь как Objects, по сути хранится пара строка + произвольный указатель. Как такое реализовать в Qt? все что нашел, это data() для listITem, но как в нем хранить указатель я так и не понял или делать своего наследника?
Название: Re: listWidget: как с каждой строкой хранить произвольный указатель? Отправлено: Sancho_s_rancho от Май 08, 2011, 18:28 QList<QPair<QString, QPointer> >
Название: Re: listWidget: как с каждой строкой хранить произвольный указатель? Отправлено: Drafter от Май 08, 2011, 19:57 Если пользуетесь моделями (в данном случае QStandardItemModel), тогда, при создании элемента модели:
Код: QStandardItem *item = new QStandardItem("Item caption"); И, соответственно, извлечение (предположим, что модель привязана к QListView): Код: AnyDataType data1 = listView->currentIndex.data(Qt::UserRole + 1).value<AnyDataType>(); Название: Re: listWidget: как с каждой строкой хранить произвольный указатель? Отправлено: Fregloin от Май 08, 2011, 22:01 а если не пользуюсь моделью? по сути мне нужно выводить простые строки, но к каждой строке привязан указатель на объект с которым связана эта строка.
Название: Re: listWidget: как с каждой строкой хранить произвольный указатель? Отправлено: Drafter от Май 08, 2011, 22:33 Тогда пользуйтесь QListWidget и QListWidgetItem.
Вставка элемента с дополнительными данными. Код: QListWidgetItem *item = new QListWidgetItem(itemText, listWidget); Извлечение. Код: PointerType pointer = listWidget->item(rowIndex)->data(Qt::UserRole).value<PointerType>(); Название: Re: listWidget: как с каждой строкой хранить произвольный указатель? Отправлено: aliks-os от Май 09, 2011, 12:50 Код: struct IDX { Вот тебе примерчик как засунуть любые данные в data. Если покумекаешь, то туда засунеш и указатель... Название: Re: listWidget: как с каждой строкой хранить произвольный указатель? Отправлено: Fregloin от Май 09, 2011, 13:04 с точки зрения производительности при большом количестве элементов (1000 и выше) как быстро это будет работать?
Не знаю как в Qt, а в Делфи вариантный тип очень тяжелый в плане скорости/объема памяти и я всегда старался его избегать. Название: Re: listWidget: как с каждой строкой хранить произвольный указатель? Отправлено: Drafter от Май 09, 2011, 13:14 Вы в каком виде собираетесь список хранить? Если внутри QListWidget, то там элементы (QListWidgetItem) по int-индексу отыскиваются. Что касается памяти, коли приложение десктопное, тогда и париться нечего.
Название: Re: listWidget: как с каждой строкой хранить произвольный указатель? Отправлено: Fregloin от Май 10, 2011, 10:37 спасибо, попробую ваш подход.
|