【问题标题】:Proper way to check QObject derived class type in Qt在 Qt 中检查 QObject 派生类类型的正确方法
【发布时间】:2009-10-08 10:59:27
【问题描述】:

假设我有两个类:

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())) {
...

有没有更好的方法?

【问题讨论】:

    标签: qt types qobject


    【解决方案1】:

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

    【讨论】:

    • 好吧..查看继承函数源表明它在内部使用 qobject_cast 来验证对象类型
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 2013-11-20
    • 1970-01-01
    相关资源
    最近更新 更多