Russian Qt Forum

Qt => Общие вопросы => Тема начата: qt_beginner от Ноябрь 05, 2011, 02:13



Название: Использование указателя на объект в QMap
Отправлено: qt_beginner от Ноябрь 05, 2011, 02:13
Использую в QMap в качестве ключа указатель на объект -  QMap <QTreeWidgetItem*,QString> someMap;

Такая конструкция в принципе работает.

Можно ли так делать, и какие подводные камни есть при использовании указателя в качестве ключа?


Название: Re: Использование указателя на объект в QMap
Отправлено: kambala от Ноябрь 05, 2011, 03:12
думаю в твоем случае лучше текст записывать прямо в айтем через QTreeWidgetItem::setData() (ну или QTreeWidgetItem::setText())


Название: Re: Использование указателя на объект в QMap
Отправлено: Igors от Ноябрь 05, 2011, 10:38
Использую в QMap в качестве ключа указатель на объект -  QMap <QTreeWidgetItem*,QString> someMap;

Такая конструкция в принципе работает.

Можно ли так делать, и какие подводные камни есть при использовании указателя в качестве ключа?
Ну как "работает" - сравниваются указатели, как прицепить функтор для QMap - мне неизвестно. Это годится для поиска, но итерация такой QMap будет невоспроизводимой - т.е. на следующем запуске элементы в QMap будут расположены уже в др. порядке, как их выделит new. Если айтем удаляется и опять создается - нужно суетиться и в QMap его заново вставлять. Проще и лучше хранить прямо в айтеме как предложил kambala


Название: Re: Использование указателя на объект в QMap
Отправлено: Рома от Ноябрь 08, 2011, 22:28
Возможно я не совсем правильно понял суть вопроса, но лично я вместо QTreeWidgetItem* использовал-бы QPoint с номерами строки и столбца соответственно. Так не будет никаких проблем с указателями.