在Qt中检查QObject派生类类型的正确方法

时间:2009-10-08 10:59:28

标签: qt types qobject

假设我有两个班级:

class A : public QObject {};
class B : public QObject {};

然后我去

QObject *a = new A();
QObject *b = new B();

现在,我如何确保“a”是A类的实例,而“b”是B类的实例?

目前我这样做:

if (a->inherits(A::staticMetaObject.className())) {
...
} else if (a->inherits(A::staticMetaObject.className())) {
...

有更好的方法吗?

1 个答案:

答案 0 :(得分:32)

您可以在QObject派生类上使用qobject_cast<MyClass*>(instance)并检查返回值。如果instance无法转换为MyClass*,则返回值将为NULL。