原文
Qt帮助手册对T qobject_cast(QObject *object)
介绍的原文:
翻译
函数说明
T qobject_cast(QObject *object)
如果 object
是类型 T
或其子类的对象,则将给定的 object
转换为类型 T
;如果不是,则返回 0
。如果 object
是 0
,那么也会返回 0
。
注意:类型 T
必须直接或间接继承自 QObject 并且声明了 Q_OBJECT
宏。
一个类被认为是它自身的子类。
示例:
QObject *obj = new QTimer; // QTimer 继承自 QObject
QTimer *timer = qobject_cast<QTimer *>(obj);
// timer == (QObject *)obj
QAbstractButton *button = qobject_cast<QAbstractButton *>(obj);
// button == 0
qobject_cast()
的行为类似于标准 C++
的 dynamic_cast()
,但它不需要 RTTI
支持,并且可以跨动态库边界工作。qobject_cast()
还可以与接口一起使用;有关详细信息,请参见 Plug & Paint
示例。
警告
如果 T
没有声明 Q_OBJECT
宏,则函数的返回值是未定义的。