crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Копии плагина в приложении, Как реализовать?
fogi
  опции профиля:
сообщение 2.4.2011, 22:10
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 2.4.2011
Пользователь №: 2568

Спасибо сказали: 0 раз(а)




Репутация:   0  


Добрый вечер.
Существует MDI приложение sub-окна в которого создаются плагинами.
Плагин содержит набор функций для создания, настройки и обновления информации в окне.
Есть необходимость иметь несколько загруженных копий одного и того-же драйвера.

Пытаюсь сделать таким образом:
         QList <UiInterface *> plugins;
         ..........
         QObject *plugin = pluginLoader.instance();
         if (plugin) {
             uiInterface = qobject_cast<UiInterface *>(plugin);
             if (uiInterface)
                 plugins.append(uiInterface);
         }
         .........
         for(int i=0;i<plugins.count();i++)
           plugins.at(i)->setLabelTitle(QString::number(i)); /// Текст почему-то устанавливается только у последнего созданного окна.


Помогите разобраться пожалуйста. Что я делаю не верно?
Спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 3.4.2011, 10:14
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


а что из себя представляет UiInterface, что делает его метод setLabelTitle()?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
fogi
  опции профиля:
сообщение 3.4.2011, 13:56
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 2.4.2011
Пользователь №: 2568

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 3.4.2011, 11:14) *
а что из себя представляет UiInterface, что делает его метод setLabelTitle()?


UiInterface - dbhnefkmysq клас интерфейса к плагину
метод setLabelTitle() устанавливает текст виджету.

class UiInterface
{
public:
     virtual ~EchoInterface() {}
     virtual void createWidget(QWidget *parent) = 0;
     virtual void setLabelTitle(const QString &message) = 0;
};


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 3.4.2011, 19:32
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(fogi @ 3.4.2011, 16:56) *
метод setLabelTitle() устанавливает текст виджету.
какому? код этой функции приведи.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PAFOS
  опции профиля:
сообщение 4.4.2011, 8:25
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 258
Регистрация: 27.12.2010
Из: Дмитров
Пользователь №: 2309

Спасибо сказали: 29 раз(а)




Репутация:   8  


Цитата
Есть необходимость иметь несколько загруженных копий одного и того-же драйвера.


Я обычно в интерфейсе делаю функцию, которая создает экземпляр класса

class Interface 
{
   public:
     virtual Interface *createInstance() = 0;
};


class MyImpl : Interface
{
  public:
    virtual MyImpl *createInstance()
    { return new MyImpl(); }
};
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
fogi
  опции профиля:
сообщение 4.4.2011, 12:50
Сообщение #6


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 2.4.2011
Пользователь №: 2568

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(PAFOS @ 4.4.2011, 9:25) *
Я обычно в интерфейсе делаю функцию, которая создает экземпляр класса


Спасибо, помогло.. :clapping:

Может вы еще подскажете где можно посмотреть пример реального, не оч. сложного приложения использующего плагины?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PAFOS
  опции профиля:
сообщение 4.4.2011, 14:04
Сообщение #7


Активный участник
***

Группа: Участник
Сообщений: 258
Регистрация: 27.12.2010
Из: Дмитров
Пользователь №: 2309

Спасибо сказали: 29 раз(а)




Репутация:   8  


quIM, MDC )
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
fogi
  опции профиля:
сообщение 4.4.2011, 15:38
Сообщение #8


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 2.4.2011
Пользователь №: 2568

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(PAFOS @ 4.4.2011, 15:04) *
quIM, MDC )


Это слишком для меня..((

Полегче чтонить есть? :mellow:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 4.4.2011, 18:13
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(fogi @ 4.4.2011, 18:38) *
Полегче чтонить есть?
%QTDIR%\examples и Асистент, с описанием примера плагина. Вроде Plug&Paint называется
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
fogi
  опции профиля:
сообщение 5.4.2011, 10:00
Сообщение #10


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 2.4.2011
Пользователь №: 2568

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 4.4.2011, 19:13) *
%QTDIR%\examples и Асистент, с описанием примера плагина. Вроде Plug&Paint называется


Это я все изучил, там все просто. Интересен пример фабрики плагинов, и менеджера плагинов.
Ничего доступного для своего понимания пока не нашел.. Увы..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 19.3.2024, 17:05