Словил пару вопросов при переходе на 4.4
1.
Есть объект
--------------------------------------
#ifndef TEST_H
#define TEST_H
#include "abstracttest.h"
#include <QObject>
class Test : public AbstractTest
{
Q_OBJECT
public:
Test(QObject *parent);
~Test();
public Q_SLOTS:
int test(const int com);
private:
};
#endif // TEST_H--------------------------------------
соот- но наследник
#ifndef ABSTRACTTEST_H
#define ABSTRACTTEST_H
#include <QObject>
class AbstractTest : public QObject
{
Q_OBJECT
public:
AbstractTest(QObject *parent);
~AbstractTest();
public Q_SLOTS:
int test(const int com);
};
#endif // ABSTRACTTEST_H------------------------------------------
если я его делаю доступным из скрипта
......
Test * test = new Test(this);
QScriptValue objectValue = engine.newQObject((Test *)(test));
engine.globalObject().setProperty("myObject", objectValue);
и выполняю скрипт
"myObject.test(5);"то в версии 4.3.* нормально вызывается слот test объекта Test
а в 4.4.* ошибка
"TypeError: ambiguous call of overloaded function test(); candidates were
test(int)
test(int)"
но скрипт
myObject.['test(int)'](5);проходит.
Причем наследуемая функция может и виртуальной быть.
У меня в проекте куча объектов с наследованием - все ругаются при вызове наследованных функций.
Но это ладно. можно во всем скрипте поменять на Объект.[прототип].
2.
В 4.3.* можно было без изменений передать через скрипт любой QVariant.
Пусть есть объект Test .
у его С++ прототипа есть
СЛОТЫ
QVariant getVariant();
void setVariant(const QVariant & v);В 4.3 я мог в скрипте получить
var data = Test.getVariant();
....
Test.setVariant(data)
а в варианте у меня QMap c вложенными QMap и QList, эдакая древовидная структура.
и она не изменялась в процессе прибывания в скрипте(Ж:))
если мне надо было ее распарсить в скрипте есть функцайка ...
QVariantMap toMap(const QVariant & v)которая с-но возвращала уже скриптовый Объект и я с ним уже игрался..
в 4.4 QVariant сразу преобразуется согласно правил c++ в QtScript и наоборот.
Наверно это и правильно по идее.
Но тогда вопрос - Как иметь возможность передавать неизмененые QMap QList и т.д. но с возможностью и обработки в скрипте.
Разумного и красивого способа пока не получилось
Прошу прощения за возможную сумбурность изложения....