![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Creator |
![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 7.7.2009 Пользователь №: 881 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Как привести указатель на объект класса QTreeWidgetItem к указателю на класс, унаследованному от QTreeWidgetItem?
|
|
|
ViGOur |
![]()
Сообщение
#2
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Примерно так:
|
|
|
Tonal |
![]()
Сообщение
#3
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: ![]() ![]() ![]() |
Таки лучше dynamic_cast.
Ну или в рукопашную: * определить константу типа MyUserType = QTreeWidgetItem::UserType + 1 * В конструкторе её передать, перед приведением проверять что item.type() == MyUserType * Ну и приводить static_cast-ом - хотя бы от глупых ошибок защитит. ![]() |
|
|
ViGOur |
![]()
Сообщение
#4
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Tonal, для новичков в программировании аналог reinterpret_cast самое то.
![]() |
|
|
Litkevich Yuriy |
![]()
Сообщение
#5
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
А я бы qobject_cast использовал:
|
|
|
Tonal |
![]()
Сообщение
#6
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: ![]() ![]() ![]() |
QTreeWidgetItem не наследник QObject-а, поэтому есть некоторые сомнения в работоспособности qobject_cast для него...
|
|
|
Creator |
![]()
Сообщение
#7
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 7.7.2009 Пользователь №: 881 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
У меня в коде для наследуемого класса был указан макрос Q_OBJECT.
И из-за этого не работали все вышеприведенные методы |
|
|
Tonal |
![]()
Сообщение
#8
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: ![]() ![]() ![]() |
dynamic_cast может не работать только в случае явного отключения rtti, а static_cast и приведение в старом стиле - в случае синтаксической ошибки.
Наличие или отсутствие макроса Q_OBJECT на их вообще не влияет. Какие именно все методы "не работали" и как? ![]() Может таки код покажешь? ![]() |
|
|
Creator |
![]()
Сообщение
#9
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 7.7.2009 Пользователь №: 881 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
![]() и то же самое main.cpp Раскрывающийся текст
subitem.cpp Раскрывающийся текст
subitem.h Раскрывающийся текст
tst.pro Раскрывающийся текст
|
|
|
kwisp |
![]()
Сообщение
#10
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
думается следующее.
надо проверить tree->topLevelItem(0) по-моему там ноль. |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 10.2.2025, 20:16 |