crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QObject * parent = 0 - возможен ли доступ к его методам из дочернего объекта ?
Diem
  опции профиля:
сообщение 14.3.2009, 12:15
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 8
Регистрация: 10.3.2009
Пользователь №: 603

Спасибо сказали: 0 раз(а)




Репутация:   0  


При создании экземпляра QObject можно передать объект-родитель, при разрушении которого будет разрушен и данный экземпляр QObject.
Но возможен ли доступ из дочернего объекта к мтодам этого самого родителя ?
value = parent()->getSomeInfo();
даёт ошибку: ‘class QObject’ has no member named ‘getSomeInfo’

Или если я поставлю в конструкторе в место типа QObject* для parent - MyClass*, будет ли дочерний объект разрушатся при разрушении parent ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 14.3.2009, 12:25
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(Diem @ 14.3.2009, 12:15) *
При создании экземпляра QObject можно передать объект-родитель, при разрушении которого будет разрушен и данный экземпляр QObject.
Но возможен ли доступ из дочернего объекта к мтодам этого самого родителя ?
value = parent()->getSomeInfo();
даёт ошибку: ‘class QObject’ has no member named ‘getSomeInfo’

Или если я поставлю в конструкторе в место типа QObject* для parent - MyClass*, будет ли дочерний объект разрушатся при разрушении parent ?


Цитата из assistant:
Цитата
T qobject_cast ( QObject * object )
Returns the given object cast to type T if the object is of type T (or of a subclass); otherwise returns 0.
The class T must inherit (directly or indirectly) QObject and be declared with the Q_OBJECT macro.
A class is considered to inherit itself.
Example:
QObject *obj = new QTimer; // QTimer inherits QObject

QTimer *timer = qobject_cast<QTimer *>(obj);
// timer == (QObject *)obj

QAbstractButton *button = qobject_cast<QAbstractButton *>(obj);
// button == 0
The qobject_cast() function behaves similarly to the standard C++ dynamic_cast(), with the advantages that it doesn't require RTTI support and it works across dynamic library boundaries.
qobject_cast() can also be used in conjunction with interfaces; see the Plug & Paint example for details.
Warning: If T isn't declared with the Q_OBJECT macro, this function's return value is undefined.


MyClass *p = qobject_cast<MyClass*>( parent() );
p->getSomeInfo();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.3.2009, 12:29
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Diem @ 14.3.2009, 15:15) *
даёт ошибку: ‘class QObject’ has no member named ‘getSomeInfo’
приведи свой код.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Diem
  опции профиля:
сообщение 14.3.2009, 12:48
Сообщение #4


Новичок


Группа: Новичок
Сообщений: 8
Регистрация: 10.3.2009
Пользователь №: 603

Спасибо сказали: 0 раз(а)




Репутация:   0  


Спасибо, qobject_cast - как раз то что нужно!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.9.2019, 12:46