Автор: Diem 14.3.2009, 12:15
При создании экземпляра QObject можно передать объект-родитель, при разрушении которого будет разрушен и данный экземпляр QObject.
Но возможен ли доступ из дочернего объекта к мтодам этого самого родителя ?
value = parent()->getSomeInfo();
даёт ошибку: ‘class QObject’ has no member named ‘getSomeInfo’
Или если я поставлю в конструкторе в место типа QObject* для parent - MyClass*, будет ли дочерний объект разрушатся при разрушении parent ?
Автор: BRE 14.3.2009, 12:25
Цитата(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
Цитата(Diem @ 14.3.2009, 15:15)
даёт ошибку: ‘class QObject’ has no member named ‘getSomeInfo’
приведи свой код.
Автор: Diem 14.3.2009, 12:48
Спасибо, qobject_cast - как раз то что нужно!