gpt4 book ai didi

c++ - 如何将 QVariant 转换为原生 QtScriptValue(数字、字符串等)

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

我在验证 QtScript 脚本中的值时遇到了一些问题。验证器函数如下所示:

function isValueInvalid(value) {
return typeof value=="undefined" || value == null || value == "" || value == "X";
}

字符串 "X" 在我的设置中也是无效值。这些值被添加到这样的对象中:

someQtscriptValue.setProperty(name, myQtScriptEngine.newVariant(someQVariant));

现在的问题是,转换为 "undefined" 字符串的值不断通过 typeof 检查。所以我添加了测试调试输出。我在脚本中打印了整个 someQtscriptValue:

// This is qtscript code:
print("Validating row "+JSON.stringify(someQtscriptValue));

结果令人困惑(缩短了,看起来都一样):

Validating row {"SJZ_A":{},"SJZ_B":{},"SJZ_C":{},"SJZ_D":{},"SJZ_E":{}}

我还决定打印关于每个值的一些信息:

var propName = "name of one of the properties";
var isValid = !isValueInvalidCEPS(someQtscriptValue[propName]);
print("someQtscriptValue[\""+propName+"\"] = "+someQtscriptValue[propName]+" ("+(isValid?"valid":"invalid")+") type="+(typeof someQtscriptValue[propName]));

这更令人惊讶:

someQtscriptValue["name1"] = ULSE  (valid) type=object
someQtscriptValue["name2"] = 22 (valid) type=object
someQtscriptValue["name3"] = undefined (valid) type=object

显然,如果我从 QVariant 生成 QScriptValue,它的行为就像一个对象,因为包括“未定义”值在内的所有值都具有对象类型。

那么从 QVariants 创建 QScript 值的正确方法是什么?

最佳答案

所以,就 QVariants 而言,这个方法工作得很好:

QScriptEngine::toScriptValue

QVariant 可以传递给它。如果 QVariant 无效,它将以 undefined QTscript 值结束。数字 qvariants 变成数字和字符串作为字符串。

关于c++ - 如何将 QVariant 转换为原生 QtScriptValue(数字、字符串等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43430411/

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