次のコードがあります。
QString* data = new QString("data to QML");
engine.rootContext()->setContextProperty(QStringLiteral("consoleText"), QVariant::fromValue(data));
これは機能しません。QTCreator のエラー メッセージは次のとおりです。
...\qglobal.h:693: エラー: 静的アサーションに失敗しました: タイプが登録されていません。Q_DECLARE_METATYPE マクロを使用して Qt のメタオブジェクト システムに認識させてください #define Q_STATIC_ASSERT_X(Condition, Message) static_assert(bool(Condition) 、 メッセージ)
Q_DECLARE_METATYPE
次のようなことをすると、 forを使用する必要があるとは思いませんQString
。
engine.rootContext()->setContextProperty(QStringLiteral("consoleText"), QVariant::fromValue(QString("data to QML")));
それは正常に動作します。
QVariant::fromValue()
事前に宣言された QStringでどのように使用できるかに興味があります。