2017-04-15 7 views
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 

분명히 내가 QScriptValueQVariant에서 만들면 "정의되지 않은"값을 포함한 모든 값이 유형을 객체로 가지기 때문에 객체처럼 동작합니다.

그래서 QVariant에서 QScript 값을 만드는 올바른 방법은 무엇입니까?

답변

1

그래서, 지금까지의 QVariants에 관한 한,이 방법은 잘 작동합니다 :

QScriptEngine::toScriptValue

QVariant이 전달 될 수 있습니다. QVariant이 유효하지 않으면 결국 undefined QTscript 값이됩니다. 숫자 qvariants는 숫자와 문자열을 문자열로 변환합니다.