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();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 26.11.2024, 13:21