Если же в этом случае компилирую проэкт, то при линковке выводится ошибка:
(.text$_ZN16tableviewFactoryC1Ev[tableviewFactory::tableviewFactory()]+0x2e): undefined reference to `vtable for tableviewFactory' D:/Devel/tisaprj/tableview/../../qt-win-opensource-src-4.5.1/include/QtCore/../../src/corelib/tools/qlist.h:(.text$_ZN16tableviewFactoryC1Ev[tableviewFactory::tableviewFactory()]+0x3a): undefined reference to `vtable for tableviewFactory'
Это происходит скорее всего из-за того, что moc не распознает класс с Q_OBJECT, который делается с помощью #define FACTORY. moc парсит исходники до отработки препроцессора и такие подстановки делать не умеет.
moc пробегается по исходникам и выбирает классы, в которых есть макрос Q_OBJECT, и для этих классов генерируется специальные файлы moc_*.cpp. Поэтому, для правильной генерации этих файлов необходимо, что бы moc находил в классе макрос Q_OBJECT, т.е.:
tableview.h class tableviewFactory : public QObject, public ViewFactory { Q_OBJECT Q_INTERFACES(ViewFactory) public: FACTORY(tableview,"TableView", "TableView version 0.1") };
Конечно не то что хотелось бы, если у кого будут еще сообращения - делитесь
Конечно, накостылял ты тут (хотя идея хорошая). Убери объявления factory из дефайнов. Сделай класс-родитель для tablviewFactory и ViewFactory, в котором будут определяться твои функции newInstance, getFactoryName, getFactoryDesc. А потом уже наследуй от него и переопределяй те методы, которые нужно переопределить.
И еще, неужели у тебя с таким кодом подсказки кода работают корректно?