Russian Qt Forum
Ноябрь 25, 2024, 10:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как сохранить результаты работы плагина в главном приложении?  (Прочитано 2309 раз)
Jeka
Гость
« : Июль 30, 2013, 15:12 »

Добрый день. Мое приложение подгружает несколько плагинов, которым необходимо обмениваться некоторой информацией.
Пытался делать вот так:

Код:

class iface                                                     // Класс интерфейса
{  

public:
    virtual ~iface(){}
    virtual void set_container(Сontainer *data) = 0;
};
Q_DECLARE_INTERFACE(iface,"com.mysoft.app.iface/1.0")

class Container                                                // Класс с данными
{
public:
      void set_data(int key, QVariant data);          // сеттеры геттеры
      QVariant get_data(int key);
private:
      QMap <int,QVariant> m_data;                    // здесь хранятся данные
}
class MainWindow
{
private:
        Container *m_data_class;                       // класс с  данными который передаю в подключаемый плагин                
                                                                    

        void load_plugins();                                // функция загрузки плагинов
}

void MainWindow::load_plugins()
{
        plugin_path =                                       //Путь к плагину
        ...
        QPluginLoader loader(plugin_path);

        iface *pi = qobject_cast<iface*>(loader.instance());

        pi->set_container(m_data_class);        // Передаю указатель на класс данных
}

void SomePluginClass::set_container(Container *data)
{
        data->set_data(1,"Hello!!!");                //Ошибка            
}


Попытка обращения к методам и членам класса MainWindow приводит к ошибке:

/home/jeka/QtPro/Plugin4/App/App: symbol lookup error: /home/jeka/QtPro/Plugin4/plugins/libplugin.so: undefined symbol: _ZN9container8set_dataEi8QVariant

но если у меня в классе MainWindow есть QStandardItemModel то к объектам этой модели я могу получить доступ, например к методу
QTreeWidgetItem->text().

Подскажите как сделать сохранение временной информации?
« Последнее редактирование: Июль 30, 2013, 15:17 от Jeka » Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Июль 30, 2013, 15:42 »

Все же написано.
Где находится реализация Container?
Записан
Jeka
Гость
« Ответ #2 : Июль 30, 2013, 15:53 »

Ага... секундочку. Вроде заработало.
Записан
Jeka
Гость
« Ответ #3 : Июль 30, 2013, 17:41 »

Да, спасибо. Все заработало. В проекте плагина класс Container был подключен только с помощью #include в хеадере класса интерфейса.

Добавил в файл проекта плагина plugin.pro пути к container.h и container.cpp и все заработало.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.056 секунд. Запросов: 23.