Maneira adequada de verificar o tipo de classe derivado de QObject no QT
Pergunta
Digamos que eu tenha duas aulas:
class A : public QObject {};
class B : public QObject {};
então eu vou
QObject *a = new A();
QObject *b = new B();
Agora, como faço para garantir que "A" seja uma instância de classe A, e "B" é uma instância da Classe B?
Atualmente eu faço algo assim:
if (a->inherits(A::staticMetaObject.className())) {
...
} else if (a->inherits(A::staticMetaObject.className())) {
...
Existe uma maneira melhor?
Solução
Você pode usar qobject_cast<MyClass*>(instance)
Nas classes derivadas do QObject e verifique o valor de retorno. Se instance
não pode ser lançado para MyClass*
, o valor de retorno será nulo.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow