我有以下代码:
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 一起使用很感兴趣。