Могу ли я использовать оболочку, которая получена от Qobject?

ужно назначить указатель на пользовательский класс в QML, используяQQmlContext::setContextProperty(), Другой объект qml имеетQ_PROPERTY того же типа, чтобы получить его снова.

Простой тест показал мне, что преобразование не работает, как я думал.

#include <QCoreApplication>
#include <QDebug>
#include <QMetaType>

class TestClass
{
public: TestClass() { qDebug() << "TestClass()::TestClass()"; }
};

Q_DECLARE_METATYPE(TestClass*)

int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);

    qDebug() << "metaTypeId =" << qMetaTypeId<TestClass*>();

    auto testObject = new TestClass;
    QVariant variant(qMetaTypeId<TestClass*>(), testObject);
    auto test = variant.value<TestClass*>();

    qDebug() << testObject << variant << test;

    return 0;
}

Это крошечное тестовое приложение дает мне такой вывод:

metaTypeId = 1024
TestClass::TestClass()
0x1b801e0 QVariant(TestClass*, ) 0x0

Я действительно хотел бы получить тот же указатель снова после преобразования его вQVariant, Позже я назначу его контексту qml, и тогда диалог должен работать правильно.

Ответы на вопрос(2)

Ваш ответ на вопрос