Здравствуйте, гость ( Вход | Регистрация )
Tonal | Дата 22.10.2009, 7:04 |
Макрос Q_OBJECT может быть указан только для наследников QObject-а: Цитата Note: This macro requires the class to be a subclass of QObject. Отсюда QTreeWidgetItem не является наследником QObject-а. Так что убери Q_OBJECT и используй dynamic_cast пока не понимаешь что происходит. ![]() |
|
Creator | Дата 22.10.2009, 1:17 |
Ошибка возникает еще на этапе компиляции. И как я и писал, программа компилируется, если убрать макрос Q_OBJECT из определения класса SubItem |
|
kwisp | Дата 19.10.2009, 15:44 |
думается следующее. надо проверить tree->topLevelItem(0) по-моему там ноль. |
|
Creator | Дата 19.10.2009, 15:09 |
![]() и то же самое main.cpp Раскрывающийся текст
subitem.cpp Раскрывающийся текст
subitem.h Раскрывающийся текст
tst.pro Раскрывающийся текст
|
|
Tonal | Дата 19.10.2009, 7:23 |
dynamic_cast может не работать только в случае явного отключения rtti, а static_cast и приведение в старом стиле - в случае синтаксической ошибки. Наличие или отсутствие макроса Q_OBJECT на их вообще не влияет. Какие именно все методы "не работали" и как? ![]() Может таки код покажешь? ![]() |
|
Creator | Дата 16.10.2009, 12:26 |
У меня в коде для наследуемого класса был указан макрос Q_OBJECT. И из-за этого не работали все вышеприведенные методы |
|
Tonal | Дата 16.10.2009, 10:13 |
QTreeWidgetItem не наследник QObject-а, поэтому есть некоторые сомнения в работоспособности qobject_cast для него... | |
Litkevich Yuriy | Дата 16.10.2009, 9:26 |
А я бы qobject_cast использовал:
|
|
ViGOur | Дата 16.10.2009, 8:51 |
Tonal, для новичков в программировании аналог reinterpret_cast самое то. ![]() |
|
Tonal | Дата 16.10.2009, 8:15 |
Таки лучше dynamic_cast. Ну или в рукопашную: * определить константу типа MyUserType = QTreeWidgetItem::UserType + 1 * В конструкторе её передать, перед приведением проверять что item.type() == MyUserType * Ну и приводить static_cast-ом - хотя бы от глупых ошибок защитит. ![]() |
|
Просмотр темы полностью (откроется в новом окне) | |
![]() |
Текстовая версия | Сейчас: 10.2.2025, 19:41 |