QScript: Im Script auf public Memberfunktionen zugreifen
Verfasst: 13. Mai 2009 11:18
Hallo,
momentan mache ich meine ersten Schritte mit QtScript. Ansich find ich QScript für gewisse Anwendungsfälle sehr nützlich.
Zum Thema:
Ich bin auf dem Stand, dass ich zB. eigene von QObject geerbte Klassenobjekte der ScriptEngine als Property bekannt machen kann.
Pseudo-Bsp.:
Gehen wir davon aus, dass MyObject einen eigenen public slot ( void slot() ) besitzt, könnte ich nun in der Script-Umgebung, diesen Slot so aufrufen:
Soweit so gut. Wenn wir nun noch davon ausgehen, dass MyObject auch eine public function ( void myFunc() ) besitzt, habe ich nicht die Möglichkeit, diese im Script aufzurufen:
Dann bekomm ich eine Script Exception: ReferenceError: myFunc is not defined
Nun gut, der Unterschied ist ja, dass bei dem Public slot ja der MOCompiler diverse Meta Eigenschaften setzt und dadurch auch dieser MemberSlot in der Script Umgebung bekannt wird (Denk ich).
Habe ich irgendwie eine Möglichkeit, public Function in irgendeiner Art zu "registrieren"? Es gibt ja Funktionen wie qRegisterMetaType, aber die beziehen sich ja auf Typen und nicht auf gezielte Funktionen.
Man könnte zwar sagen, ich mach all meine benötigten Funktion (verfügbar für Scriptumgebung) als slots, aber wenn ich zB. an ein em QLineEdit Obj in der Script-Umgebung eine "normale" Funktion aufrufen möchte, hätte ich dann ein Problem.
Ich finde den entscheidenden Hinweis in der Doku nicht.
Wer hat Ahnung?
momentan mache ich meine ersten Schritte mit QtScript. Ansich find ich QScript für gewisse Anwendungsfälle sehr nützlich.
Zum Thema:
Ich bin auf dem Stand, dass ich zB. eigene von QObject geerbte Klassenobjekte der ScriptEngine als Property bekannt machen kann.
Pseudo-Bsp.:
Code: Alles auswählen
MyObject* obj = new MyObject;
QScriptValue scrObj = scriptEngine->newQObject(obj);
scriptEngine->globalObject().setProperty("OBJ",obj);
Code: Alles auswählen
function blub {
OBJ.slot();
}
Code: Alles auswählen
function blub {
OBJ.myFunc();
}
Nun gut, der Unterschied ist ja, dass bei dem Public slot ja der MOCompiler diverse Meta Eigenschaften setzt und dadurch auch dieser MemberSlot in der Script Umgebung bekannt wird (Denk ich).
Habe ich irgendwie eine Möglichkeit, public Function in irgendeiner Art zu "registrieren"? Es gibt ja Funktionen wie qRegisterMetaType, aber die beziehen sich ja auf Typen und nicht auf gezielte Funktionen.
Man könnte zwar sagen, ich mach all meine benötigten Funktion (verfügbar für Scriptumgebung) als slots, aber wenn ich zB. an ein em QLineEdit Obj in der Script-Umgebung eine "normale" Funktion aufrufen möchte, hätte ich dann ein Problem.
Ich finde den entscheidenden Hinweis in der Doku nicht.
Wer hat Ahnung?