Вот что я обнаружил в системе Qt moc:
Использование некоторых из http://www.codeproject.com/KB/cross-platform/qt_reversing.aspx ...
Поскольку я знаю, что сгенерированный объект будет иметьодин, один слот и ничего больше (вот для чего он) генерирование moc с помощью препроцессора должно быть возможным, хотя может быть и трудным.
Большая часть информации в массиве qt_moc_data _ ??? [] может бытьжестко закодировано.Единственная линия интереса, кажется, слоты, и будет только один.Остальное может быть { 5, 0,0,0,1,14,0,0,0,0,0,0,0,0 ... slot line ...., 0}
Линия слота описана в приведенной выше ссылке.
qt_moc_stringdata _ ???должно быть что-то вроде: #object_name "\0\0" (param > 1 ? param-1:0 count commas) "\0" #functionname #paramtypelist
Я считаю, что все это может быть сгенерировано с препроцессором.Самое сложное в том, что строка слота должна содержать числа, которые предоставляют индексы для qt_moc_stringdata _ ???
Есть также некоторые функции, которые необходимо сгенерировать, и переменная типа QMetaClass или что-то еще ..Большая часть этого материала должна быть довольно простой, за исключением вызывающего, который должен переосмыслить приведение всех параметров.
Тем не менее, я считаю, что препроцессор может сгенерировать все это, и это выглядит какЕдинственный способ сделать это.Единственная помощь, которую я получил от форума qtcenter, состояла в том, чтобы использовать:
#ifdef MYCLASS
struct myclass : QObject
{
... a QObject definition...
};
#endif
... и это просто совершенно недостаточно для этой задачи.Иногда ответы людей вызывают у меня удивление.
К сожалению, конечно, вся эта магия во многом зависит от используемой версии МОК.
У меня естьнашел лучший, более простой способ сделать это.Я начал серию статей в блоге о создании этого монстра.См http://crazyeddiecpp.blogspot.com/2011/01/quest-for-sane-signals-in-qt-step-1.html