Russian Qt Forum
Сентябрь 30, 2024, 18:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Использование указателя на объект в QMap  (Прочитано 3809 раз)
qt_beginner
Гость
« : Ноябрь 05, 2011, 02:13 »

Использую в QMap в качестве ключа указатель на объект -  QMap <QTreeWidgetItem*,QString> someMap;

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

Можно ли так делать, и какие подводные камни есть при использовании указателя в качестве ключа?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #1 : Ноябрь 05, 2011, 03:12 »

думаю в твоем случае лучше текст записывать прямо в айтем через QTreeWidgetItem::setData() (ну или QTreeWidgetItem::setText())
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Ноябрь 05, 2011, 10:38 »

Использую в QMap в качестве ключа указатель на объект -  QMap <QTreeWidgetItem*,QString> someMap;

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

Можно ли так делать, и какие подводные камни есть при использовании указателя в качестве ключа?
Ну как "работает" - сравниваются указатели, как прицепить функтор для QMap - мне неизвестно. Это годится для поиска, но итерация такой QMap будет невоспроизводимой - т.е. на следующем запуске элементы в QMap будут расположены уже в др. порядке, как их выделит new. Если айтем удаляется и опять создается - нужно суетиться и в QMap его заново вставлять. Проще и лучше хранить прямо в айтеме как предложил kambala
Записан
Рома
Гость
« Ответ #3 : Ноябрь 08, 2011, 22:28 »

Возможно я не совсем правильно понял суть вопроса, но лично я вместо QTreeWidgetItem* использовал-бы QPoint с номерами строки и столбца соответственно. Так не будет никаких проблем с указателями.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 22.