wookoon
5th July 2010, 13:17
Recent I look at the "qt script signal handler",This project available creating signal in qt script.
this is some code they provide.
Script-to-script
SignalBaseClass = function() {
this.test = "signalBaseClass";
this.baseSignal = signal();
this.intSignal = signal();
};
SignalBaseClass.prototype.emitBaseSignal = function() {
this.baseSignal.emit("emitBaseSignal from " + this.test);
};
SignalBaseClass.prototype.emitBaseSignal2 = function() {
this.baseSignal.emit("emitBaseSignal2 from " + this.test);
};
SignalBaseClass.prototype.emitBaseIntSignal = function() {
this.intSignal.emit(123);
};
testSlot = function() {
print("testSlot arguments count: " + arguments.length);
for (var i = 0; i < arguments.length; ++i)
print("testSlot first argument: " + arguments[i]);
};
SlotClass = function() {
this.name = "slotClass";
};
SlotClass.prototype.slot = function() {
print(this.name + " slot arguments count: " + arguments.length);
for (var i = 0; i < arguments.length; ++i)
print(this.name + " argument(" + i + ") " + arguments[i]);
};
baseObject = new SignalBaseClass();
slotObject = new SlotClass();
baseObject.intSignal.connect(testSlot);
baseObject.emitBaseIntSignal();
signalObject = new SignalClass();
signalObject.baseSignal.connect(testSlot);
signalObject.newSignal.connect(slotObject, slotObject.slot);
signalObject.emitNewSignal();
Script-to-cpp
// Load translation file
QTranslator trans;
trans.load("qtscriptsignalhandler_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsP ath));
app.installTranslator(&trans);
QLineEdit lineEdit4(0);
lineEdit4.setWindowTitle("4C++ LineEdit");
lineEdit4.show();
qScriptConnect(engine.globalObject().property("baseObject"), "baseSignal", &lineEdit4, SLOT(setText(QString)));
engine.evaluate("baseObject.emitBaseSignal();");
qScriptDisconnect(engine.globalObject().property("baseObject"), "baseSignal", &lineEdit4, SLOT(setText(QString)));
engine.evaluate("baseObject.emitBaseSignal2();");
the function qScriptDisconnect(). will lead to errors cause the parameter.
this is some code they provide.
Script-to-script
SignalBaseClass = function() {
this.test = "signalBaseClass";
this.baseSignal = signal();
this.intSignal = signal();
};
SignalBaseClass.prototype.emitBaseSignal = function() {
this.baseSignal.emit("emitBaseSignal from " + this.test);
};
SignalBaseClass.prototype.emitBaseSignal2 = function() {
this.baseSignal.emit("emitBaseSignal2 from " + this.test);
};
SignalBaseClass.prototype.emitBaseIntSignal = function() {
this.intSignal.emit(123);
};
testSlot = function() {
print("testSlot arguments count: " + arguments.length);
for (var i = 0; i < arguments.length; ++i)
print("testSlot first argument: " + arguments[i]);
};
SlotClass = function() {
this.name = "slotClass";
};
SlotClass.prototype.slot = function() {
print(this.name + " slot arguments count: " + arguments.length);
for (var i = 0; i < arguments.length; ++i)
print(this.name + " argument(" + i + ") " + arguments[i]);
};
baseObject = new SignalBaseClass();
slotObject = new SlotClass();
baseObject.intSignal.connect(testSlot);
baseObject.emitBaseIntSignal();
signalObject = new SignalClass();
signalObject.baseSignal.connect(testSlot);
signalObject.newSignal.connect(slotObject, slotObject.slot);
signalObject.emitNewSignal();
Script-to-cpp
// Load translation file
QTranslator trans;
trans.load("qtscriptsignalhandler_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsP ath));
app.installTranslator(&trans);
QLineEdit lineEdit4(0);
lineEdit4.setWindowTitle("4C++ LineEdit");
lineEdit4.show();
qScriptConnect(engine.globalObject().property("baseObject"), "baseSignal", &lineEdit4, SLOT(setText(QString)));
engine.evaluate("baseObject.emitBaseSignal();");
qScriptDisconnect(engine.globalObject().property("baseObject"), "baseSignal", &lineEdit4, SLOT(setText(QString)));
engine.evaluate("baseObject.emitBaseSignal2();");
the function qScriptDisconnect(). will lead to errors cause the parameter.