作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在验证 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 而言,这个方法工作得很好:
QVariant 可以传递给它。如果 QVariant
无效,它将以 undefined
QTscript 值结束。数字 qvariants 变成数字和字符串作为字符串。
关于c++ - 如何将 QVariant 转换为原生 QtScriptValue(数字、字符串等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43430411/
我是一名优秀的程序员,十分优秀!