PDA

View Full Version : How to get QScriptValue property changes



enamored
16th February 2012, 06:42
I have program which use global properties in QScriptEngine.
There is the class of variable used in script code:


#ifndef VARIABLECONFIGURATION_H
#define VARIABLECONFIGURATION_H

#include <QMetaType>

class VariableConfiguration : public QObject
{
Q_OBJECT
private:
int _value;
public:
explicit VariableConfiguration(QObject *parent = 0);
public slots:
void setValue(int value);
int value() const;
signals:
void valueChanged(int value);
};

Q_DECLARE_METATYPE(VariableConfiguration*)

#endif // VARIABLECONFIGURATION_H


#include "VariableConfiguration.h"

VariableConfiguration::VariableConfiguration(QObje ct *parent) :
QObject(parent), _value(0) {
}

void VariableConfiguration::setValue(int value) {
if (_value != value) {
_value = value;
emit valueChanged(_value);
}
}

int VariableConfiguration::value() const {
return _value;
}

In main code:


_scriptEngine = new QScriptEngine(this);
qScriptRegisterMetaType(_scriptEngine, toScriptValue, fromScriptValue);

VariableConfiguration* var = new VariableConfiguration(this);
connect(var, SIGNAL(valueChanged(int)), this, SLOT(variableValueChanged(int)));

_scriptEngine->globalObject().setProperty("intVar", toScriptValue(_scriptEngine, var));

For example, I need to run script code:
intVar = 10;
How can I do that variable emit valueChanged signal when property value changed while script running?
P.S. Now I can use my variable class as intVar.setValue(10); but need intVar = 10;

Thank you.