2010-04-16 2 views
0

QtScript에서 C++로 객체 배열을 전달하고 싶습니다. 그러나이를 수행하는 방법을 파악하지 못했습니다. 배열을 생성하자마자, 배열에 접근하기 전에 배열 요소가 문자열로 변환됩니다. QtScript : C++에 객체 배열 전달

는 지금까지 시도 된 것입니다 : ...

class myObject : public QObject, public QScriptable 
{ 
    Q_OBJECT 

public Q_SLOTS: 
    void test(QVariantList list); 
}; 

void myObject::test(QVariantList list) 
{ 
    for (QVariantList::const_iterator it = list.begin(); it != list.end(); ++it) { 
     QVariant element = *it; 

     qDebug() << element.typeName() << element.toString(); 

     if (element.canConvert<QVariantMap>()) { 
      // Not getting here 
     } 
    } 
} 

다음 스크립트

myObject.test([{"foo": 1, "bar": 2}, {"baaz": 3, "baaaz": 4}]); 

인쇄

"QString" "[object Object]" 
"QString" "[object Object]" 

내가 Qt는 4.6을 사용하고

답변

1

이것은보고 된입니다.슬롯에서 매개 변수를 QScriptValue로 변경하고 직접 변환하여이 문제를 해결할 수 있습니다.

+0

Thanks! QScriptValue 및 QScriptValueIterator 배열을 사용하여 값을 구문 분석 할 수있었습니다. – Plow

+0

참고 : 5.1로 수정되었습니다. – Jay