PDA

View Full Version : qt script signal handler



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.