QtScript: передача массива объектов в C ++ - PullRequest
0 голосов
/ 16 апреля 2010

Я хочу передать массив объектов из моего 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 Ответ

1 голос
/ 16 апреля 2010

Это сообщенная ошибка , вы можете обойти это, изменив параметр в вашем слоте на QScriptValue и выполнив преобразование самостоятельно

...