Russian Qt Forum

Qt => Общие вопросы => Тема начата: nono от Ноябрь 02, 2009, 15:46



Название: Путаница с параметрами макросов определённых в QtPlugin
Отправлено: nono от Ноябрь 02, 2009, 15:46
Разбираясь с плагинами ..... озадачился вот че....
Например про макрос Q_DECLARE_INTERFACE() в книжке Шлея написано что этот макрос должен иметь два параметра: первый - имя класса интерфейса, второй - строка идентификатора........
Строка идентификатора должна состоять из: домена создателя; имени приложения; имени интерфейса; номера версии. Но программа хорошо компилируется если опустить любой параметр (например имя приложения) или даже если строка идентификатора = ""(пустой строке) так для чего же нужна это строка и какие насамом деле параметры для неё важны и зачем???

Также не разобрался с макросом Q_EXPORT_PLUGIN2(PluginName, ClassName)....
Второй параметр верно, должен быть именем класса расширения, но вот первым параметров можно указывать что угодно (произвольную строку) и тоже всё нормально компилится и работает.....а ещё чем отличается этот макрос от макроса Q_EXPORT_PLUGIN (ClassName), я и его подставлял всё вроде бы работает.....хотелось бы знать в чём отличие.....и для чего применять....
Ну и последний макрос... как я понимаю противоположность Q_EXPORT_PLUGIN() макрос Q_EXPORT_PLUGIN (ClassName)  что это и куда его засовывать.......пример если можно????

Так же если можно подскажите как можно задавать сигналы и слоты в расширениях.....т.е. если допустим я хочу отправлять сигнал с одного плагина а принимать этот сигнал другим.......у меня есть одна идея правда я щас только собираюсь попробовать....выглядит 
она примерно так......сигналы я объявляю в интерфейсе.....а вот слоты можно объявить как чисто виртуальные в том же интерфейсе (но как я слышал виртуальные слоты работают медленнее) думаю можно ещё объявить слот в интерфейсе и определить его там же..... Если кто то знает конкретное решение этой проблемы пожалуйста поделитесь........


Название: Re: Путаница с параметрами макросов определённых в QtPlugin
Отправлено: kuzulis от Ноябрь 02, 2009, 16:32
Цитировать
Так же если можно подскажите как можно задавать сигналы и слоты в расширениях.....т.е. если допустим я хочу отправлять сигнал с одного плагина а принимать этот сигнал другим.......у меня есть одна идея правда я щас только собираюсь попробовать....выглядит
она примерно так......сигналы я объявляю в интерфейсе.....а вот слоты можно объявить как чисто виртуальные в том же интерфейсе (но как я слышал виртуальные слоты работают медленнее) думаю можно ещё объявить слот в интерфейсе и определить его там же..... Если кто то знает конкретное решение этой проблемы пожалуйста поделитесь........

А по-моему никак не получится...  единственный выход - это возвращать из плагина объект (класс), методы и сигналы которого заранее объявлены в хедере (типа базового класса)...

Тут на форуе уже были похожие темы (по крайней мере от меня :) ), поищи, может чо и найдеш.. , а когда найдешь - отпишись :)