Hier ist, was ich über das Qt moc System entdeckt haben:
einige http://www.codeproject.com/KB/cross-platform/qt_reversing.aspx Mit ...
Da ich weiß, dass das erzeugte Objekt ein, Single-Slot haben wird, und nichts anderes (das ist es wofür) Das Erzeugen des Moc-Zeugs mit dem Präprozessor sollte möglich sein, obwohl es vielleicht schwierig ist.
Die meisten Informationen im Array qt_moc_data _ ??? [] können fest codiert sein. Die einzige Linie von Interesse scheint die Schlitze zu sein, und es wird nur einen geben. Der Rest kann sein { 5, 0,0,0,1,14,0,0,0,0,0,0,0,0 ... slot line ...., 0}
Die Slot-Linie wird in der obigen Verbindung beschrieben.
Die qt_moc_stringdata _ ??? muss etwas wie sein: #object_name "\0\0" (param > 1 ? param-1:0 count commas) "\0" #functionname #paramtypelist
Ich glaube, dass all das mit dem Präprozessor generiert werden kann. Der schwierige Teil wird sein, dass die Slot-Linie Zahlen enthalten muss, die Indizes für die qt_moc_stringdata _ ???
Es gibt auch einige Funktionen, die generiert werden müssen, und eine Variable vom Typ QMetaClass oder etwas ... Die meisten dieser Dinge sollten ziemlich geradlinig sein mit Ausnahme des Aufrufers, der alle Parameter uminterpretieren muss.
Trotzdem, ich glaube, der Präprozessor kann alles davon generieren und das scheint die einzige Möglichkeit zu sein, dies zu tun. Die einzige Hilfe, die ich aus dem qtcenter Forum erhielt, war zu verwenden:
#ifdef MYCLASS
struct myclass : QObject
{
... a QObject definition...
};
#endif
... und das ist einfach nur völlig unzureichend, um die Aufgabe. Manchmal fragen mich die Antworten, die die Leute geben.
Leider hängt all diese Magie natürlich stark von der verwendeten Version des Moc ab.
Ich habe einen besseren, einfacheren Weg gefunden, dies zu erreichen. Ich habe eine Blog-Artikelserie über das Erstellen dieses Monsters gestartet. Siehe http://crazyeddiecpp.blogspot.com/2011/01/quest-for-sane-signals-in-qt-step-1.html
Es ist meine Erfahrung, dass es ein Problem ist, alles mit Vorlagen und QObjects zu tun. Ich kann mir nur vorstellen, wie wir unser Problem lösen werden. –
Nun, Hölle .... Es sieht so aus, als ob es möglich wäre, den ganzen Moc-Mist pragmatisch neu zu erstellen. –