Это можно сделать с помощью QQmlParserStatus
Чтобы использовать QQmlParserStatus, вы должны унаследовать как производный от QObject класс, так и QQmlParserStatus, а также использовать макрос Q_INTERFACES ().
class MyObject : public QObject, public QQmlParserStatus
{
Q_OBJECT
Q_INTERFACES(QQmlParserStatus)
public:
MyObject(QObject *parent = 0);
...
void classBegin() override;
void componentComplete() override;
}
classBegin
может быть полезно, чтобы отметить, что экземпляр был создан из QML.Может иметь смысл выполнить некоторую инициализацию в componentComplete
, если она была создана из QML, но ничего не делать, если она была создана из c ++.
Что касается onDestroyed, вы можете подключить что-то к QObject::destroyed
сигнал.Обратите внимание, что когда выдается destroyed
, ваш объект является просто QObject
, все деструкторы подклассов уже были вызваны.