Russian Qt Forum

Qt => Общие вопросы => Тема начата: -=QT=- от Август 12, 2007, 16:38



Название: Plugin и использование глобальных объектов.
Отправлено: -=QT=- от Август 12, 2007, 16:38
В проекте main.cpp

#include "constants.h"
//
#include <QApplication>
#include <QTranslator>
#include <QLocale>
#include <QtSql>
#include <QMessageBox>
#include "qmysettings.h"
...
//
QmySettings mySettings; /* Объект по работе с локальными настройками */
...
//
#include "mainwindowimpl.h"
//
int main(int argc, char ** argv)
{
...
В других файлах реализации (...Impl.cpp)
...
extern QmySettings mySettings; /* Объект по работе с локальными настройками */
...
    /* Восстановление размера и положения главного окна программы  */
    mySettings.setWidgetGeometry( this );
...
Все это работает на ура.
Написал плугин для проги:
interfase.h
Код:
class QMyInterfaces
{
public:
    virtual ~QMyInterfaces(){}
    virtual QString menuName() const = 0;
    virtual QWidget* action(QWidget * parent = 0) = 0;
    virtual bool hasConfigDialog() const = 0;
    virtual void config(QWidget * parent = 0) = 0;
    virtual QTranslator *pluginTranslator(QString locale) = 0;
    virtual QString getLibVersion() const = 0;

};

Ну и далее реализация  и т.п.
МОХНО ЛИ ИСПОЛЬЗОВАТЬ ВНУТРИ ПЛАГИНА mySettings и если можно то как ???????


Название: Re: Plugin и использование глобальных объектов.
Отправлено: Alex Forth от Август 13, 2007, 08:43
Цитата: "-=QT=-"

МОХНО ЛИ ИСПОЛЬЗОВАТЬ ВНУТРИ ПЛАГИНА mySettings и если можно то как ???????

Можно!
Засунь реализацию QmySettings в dll и юзай 8)


Название: Plugin и использование глобальных объектов.
Отправлено: -=QT=- от Август 13, 2007, 09:30
Я так и сделал
Засунул реализацию в плагин и обьявил глобальный класс QmySettings в плагине.


Название: Plugin и использование глобальных объектов.
Отправлено: Alex Forth от Август 13, 2007, 09:38
Цитата: "-=QT=-"
Я так и сделал
Засунул реализацию в плагин и обьявил глобальный класс QmySettings в плагине.

А в чем тогда проблема?


Название: Plugin и использование глобальных объектов.
Отправлено: -=QT=- от Август 13, 2007, 09:45
Проблема была в том что я хотел использовать один глобальный объект для всего приложения, а так не получалось.
Тоесть я пытался писать в плагине:
Код:
extern QmySettings mySettings;

Ну и соответственно получал по шапке при выполнении программы.


Название: Plugin и использование глобальных объектов.
Отправлено: Alex Forth от Август 13, 2007, 09:53
Глобальный обьект  сделай синглетоном (см. http://prog.org.ru/forum/topic_6072_45.html ). Синглетон тоже засунь в dll.


Название: Plugin и использование глобальных объектов.
Отправлено: -=QT=- от Август 13, 2007, 11:00
спасибо я пробовал он мне кучу ошибок выдал при компиляции (я пока это в сторону отложил).