setContextProperty(QString-6ren">
gpt4 book ai didi

c++ - 如何将 QVariant::fromValue 与 QString 一起使用?

转载 作者:行者123 更新时间:2023-11-27 22:54:49 25 4
gpt4 key购买 nike

我有以下代码:

QString* data = new QString("data to QML");
engine.rootContext()->setContextProperty(QStringLiteral("consoleText"), QVariant::fromValue(data));

这个不行,QTCreator中的报错信息如下:

...\qglobal.h:693: error: static assertion failed: Type is not registered, please use the Q_DECLARE_METATYPE macro to make it known to Qt's meta-object system #define Q_STATIC_ASSERT_X(Condition, Message) static_assert(bool(Condition), Message)

我不认为我应该为 QString 使用 Q_DECLARE_METATYPE 因为如果我这样做:

engine.rootContext()->setContextProperty(QStringLiteral("consoleText"), QVariant::fromValue(QString("data to QML")));

它工作正常。

我感兴趣的是如何将 QVariant::fromValue() 与预先声明的 QString 一起使用。

最佳答案

QVariant::fromValue() 需要一个 QString,而不是一个指向 QString 的指针。

此外,在堆上分配一个QString 对象没有多大意义。在底层,QString 使用写时复制 (COW) 作为优化;无论如何,存储在 QString 中的实际数据将始终在堆上。

关于c++ - 如何将 QVariant::fromValue 与 QString 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34278017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com