0
我在驗證QtScript腳本中的值時遇到了一些問題。驗證器功能如下所示:如何將QVariant轉換爲原生QtScriptValue(數字,字符串等)
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值的正確方法是什麼?