LINUX.ORG.RU

Работа со скриптами

 ,


0

2

Доброго времени суток всем!
Мне нужна помощь по работе со скриптами в Qt4. Собственно сам сабж:

Есть некий класс объявленный следующим образом:


class SomeMaker: public QObject
{
	Q_OBJECT
public:
	SomeMaker(QObject* parent = 0);
	~SomeMaker();
...
	Q_INVOKABLE bool make1();
	Q_INVOKABLE bool make2();	

...
};

Есть другой класс, который использует экземпляр класса SomeMaker:


class SomeMakerUser: public QObject
{
	Q_OBJECT
public:
...
	SomeMakerUser();
	~SomeMakerUser();
        SomeMaker* maker;
...
private:
...
        void executeScript(); 
...
};	

Функция executeScript():

void executeScript()
{
        QScriptEngine* engine = new QScriptEngine(this);
        QScriptValue objectValue = engine->newQObject(this);
	engine->globalObject().setProperty("SomeMakerUser",objectValue);
        QString script = button->getScript();
	engine->evaluate("SomeMakerUser.maker.make1()").toString();
	qDebug()<<engine->hasUncaughtException();
}

И собственно вопрос: почему не срабатывает вызов функции make1.

Может быть потому, что у тебя SomeMakerUser::maker не доступно из скрипта и SomeMakerUser.maker имеет значение undefined?

anonymous ()
Ответ на: комментарий от anonymous

Может и поэтому, но отсюда логичный вопрос, как сделать его доступным?

Sakura ()
Ответ на: комментарий от Adonai

Если вы имеете ввиду что-то такое:

class SomeMakerUser: public QObject
{
	Q_OBJECT
public:
...
	SomeMakerUser();
	~SomeMakerUser();
        SomeMaker* maker;
        Q_PROPERTY(SomeMaker* maker READ getMaker);
...
private:
...
        void executeScript(); 
...
};	

, то не помогает.

Sakura ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.