Определение типа. |
Здравствуйте, гость ( Вход | Регистрация )
Определение типа. |
Trisch |
9.7.2014, 13:11
Сообщение
#1
|
Активный участник Группа: Участник Сообщений: 379 Регистрация: 30.1.2012 Из: Запорожье Пользователь №: 3169 Спасибо сказали: 24 раз(а) Репутация: 0 |
На сцене(QGraphicsScene) имеются несколько QGraphicsItem, несколько из них унаследованные от QGraphicsItem и имеют тип MyItem.
Надо определить пересекающиеся MyItem. Для этого используется функция QList<QGraphicsItem *> QGraphicsScene::collidingItems ( const QGraphicsItem * item, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape ), но эта функция возвращает все итемы которые пересекаются. Можно ли среди полученных итемов найти MyItem? |
|
|
Iron Bug |
9.7.2014, 14:34
Сообщение
#2
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
почитай про dynamic_cast. он возвращает NULL при преобразовании, если тип не совпадает.
P.S. кстати, тему надо перенести в вопросы по С/C++, к Qt это не имеет отношения. Сообщение отредактировал Iron Bug - 9.7.2014, 14:42 |
|
|
Анна |
10.7.2014, 11:16
Сообщение
#3
|
Активный участник Группа: Участник Сообщений: 276 Регистрация: 22.5.2008 Из: Зеленоград Пользователь №: 181 Спасибо сказали: 30 раз(а) Репутация: 4 |
В qt есть перегруженные qvariant_cast и qobject_cast. Правда, к этому надо ещё почитать про метаданные в qt.
Сообщение отредактировал Анна - 10.7.2014, 11:16 |
|
|
Litkevich Yuriy |
21.7.2014, 23:14
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
В qt есть перегруженные qvariant_cast и qobject_cast. Правда, к этому надо ещё почитать про метаданные в qt. почитай про dynamic_cast. он возвращает NULL при преобразовании, если тип не совпадает. для наследников QGraphicsItem есть qgraphicsitem_cast
но своего наследника ты должен был сделать следуя определённым правилам (задав тип) см. документацию |
|
|
Текстовая версия | Сейчас: 29.4.2024, 18:24 |