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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 184 185 [186] 187 188
2776  Программирование / С/C++ / Re: Как создать класс с "меняющейся начинкой" ? : Январь 19, 2009, 14:04
Цитировать
В любой спешке виноваты блохи.
Либо они на теле, либо в голове...

сие высказывание не несет полезной инфы! увы!
2777  Программирование / С/C++ / Re: Как создать класс с "меняющейся начинкой" ? : Январь 19, 2009, 14:01
Цитировать
В данном случае лучше не писать свой велосипед вообще, а использовать вместо него непосредственно QVariant.

т.е

Код:
QVariant Registr::getValue()
{
 return RegValue;
}

Код:
void Registr::setValue(QVariant Value)
{
 RegValue = Value;
}

а сам RegValue  объявить как QVariant Непонимающий?
2778  Программирование / С/C++ / Re: Как создать класс с "меняющейся начинкой" ? : Январь 19, 2009, 13:30
Цитировать
Давайте мы не будем заниматься упражнениями в стиле Foo-Bar. Скажите какую прикладную задачу вы хотите решить и возможно ответ будет найти проще

вообщето в первом посте моем вроде как задача обрисована...

т.е имеется некий класс "регистр" (class Registr) в зависимости от его типа (например тип 1 или тип 2) значение этого регистра может
быть или bool или int ...

т.е чтобы не создавать два класса class Registr1 и class Registr2 нужно как-то сделать все в одном, и чтобы при указании в конструкторе класса типа 1 или типа 2  Registr::Registr(Register Type) происходил анализ этой переменной "Register Type" и в соответствии с ней определенным образом создавались "кишки" класса.. в частности переменная Value и ф-ции, с помощью которых можно ее прочитать и записать!

т.е если задан тип 1 - то переменная Value должна создаться типа int , и соответственно ф-я getValue должна возвратить тип int, а ф-я SetValue(Value) должна принимать параметр типа int  ...

в случае типа 2 - соответственно все bool должно быть
2779  Программирование / С/C++ / Re: Как создать класс с "меняющейся начинкой" ? : Январь 19, 2009, 13:15
т.е вместо:
Код:
QVariant MyOBj::getValue()
{
 if (type==1) then return objValue.toInt;
 if (type==2) then return objValue.toBool;
}

писать:
Код:
QVariant MyOBj::getValue()
{
 return objValue;
}

??
2780  Программирование / С/C++ / Re: Как создать класс с "меняющейся начинкой" ? : Январь 19, 2009, 13:08
насчет QVariant - это так получится?  :

*.h
Код:
class MyObj
{
public:
 MyObj(int type);
 int getType();
 QVariant getValue(); //
 void setValue(QVariant value); //
private:
 int ObjType;
 QVariant objValue; //
}


*.cpp
Код:
MyOBj::MyObj(int type)
{
 ObjType = type;
}

QVariant MyOBj::getValue()
{
 if (type==1) then return objValue.toInt;
 if (type==2) then return objValue.toBool;
}

QVariant MyOBj::setValue(QVariant value)
{
 ObjType = value;
}



2781  Программирование / С/C++ / Re: Как создать класс с "меняющейся начинкой" ? : Январь 19, 2009, 12:35
да некада Улыбающийся мне б побыстрее б
2782  Программирование / С/C++ / Как создать класс с "меняющейся начинкой" ? : Январь 19, 2009, 11:56
Доброго дня!


к примеру есть некий объект, но в зависимости от его типа нужно соосветственно по разному создавать его "внутренности"

например в одном случае в зависимости от типа объекта (ObjType) надо иметь:
Код:
class MyObj
{
public:
 MyObj(int type);
 int getType();
 int getValue(); //т.е результат - целое
 void setType(int type);
 void setValue(int value); //т.е параметр - целое
private:
 int ObjType;
 int ObjValue; // т.е. значение - целое
}
но в другом случае в зависимости от типа объекта (ObjType) надо иметь:
Код:
class MyObj
{
public:
 MyObj(int type);
 int getType();
 bool getValue(); //т.е результат - булев
 void setType(int type);
 void setValue(bool value); //т.е параметр - булев
private:
 int ObjType;
 bool ObjValue; // т.е. значение - булево
}
т.е как мне объеденить все это в одном классе, но чтобы в зависимости от переменной type в конструкторе,
класс создавался с переменной value - целой или булевой?

2783  Qt / Общие вопросы / Re: Загрузка классов из динамических библиотек??? : Январь 16, 2009, 12:34
спс Улыбающийся

я примерно так себе все и представлял...
2784  Qt / Общие вопросы / Re: Загрузка классов из динамических библиотек??? : Январь 16, 2009, 11:53
2 -=QT=-

а реалирация ф-ци старта потока у вас вынесена в конструктор:    QmyScanerThread(QObject * parent = 0); Непонимающий

т.е при создании потока - он автоматом у вас стартует?
2785  Qt / Общие вопросы / Re: Загрузка классов из динамических библиотек??? : Январь 15, 2009, 19:25
2  -=QT=-

Цитировать
2. Плагины с реализацией функционала в новом потоке. (тогда при падении одного плагина все приложение не падает и не тормозит)

а расскажите ка на пальцах принцип как вы это реализовали! а лучше в примерчиках  Улыбающийся имею ввиду потоки! да и вообще суть! Улыбающийся

2786  Qt / Общие вопросы / Re: Загрузка классов из динамических библиотек??? : Январь 15, 2009, 15:54
Цитировать
фу, как оскорбительно. и твоё "имхо" совсем неуместно.
Улыбающийся 

в общем остановился пока на такой примерной реализации:

interfaces.h

Код:
#ifndef INTERFACES_H
#define INTERFACES_H

class MyModuleInterface
{
public:
    virtual ~MyModuleInterface() {}
    virtual void MyModuleStart() = 0;
    virtual void MyModuleStop() = 0;
};

Q_DECLARE_INTERFACE(MyModuleInterface, "mywww.My.MyModuleInterface/1.0")

#endif

myPlug.h

Код:
#ifndef MYPLUG_H
#define MYPLUG_H

#include <QObject>
#include <QThread>

#include "../app/interfaces.h"

//это собственно определение моего модуля, который должен чо-то выполнять
class TMyModule : public QThread
{
    Q_OBJECT

protected:
    void run();
//тут добавлю потом в public, private различные необхлдимые мне методы//
public:
    bool mabort;
};

//это как я понял плагин с интерфейсом
class MyModulePlugin : public QObject,
                       public MyModuleInterface
{
    Q_OBJECT
    Q_INTERFACES(MyModuleInterface)


public:
    void MyModuleStart();
    void MyModuleStop();
private:
    TMyModule Module;
};

#endif

myPlug.cpp

Код:
#include <QtGui>
#include "myPlug.h"


/****** МОДУЛЬ ******/
void TMyModule::run()
{
    printf("Module is Running \n");
    while (!mabort) {
sleep(1);
printf("Run \n");

    /*
    тут будет собственно реализован к примеру алгоритм работы модуля
    */
    }
    printf("Module is Stopped \n");
}

/****** ПЛАГИН ******/
void MyModulePlugin::MyModuleStart()
{
   Module.mabort = false;
   if (!Module.isRunning())
    Module.start();
}

void MyModulePlugin::MyModuleStop()
{
   Module.mabort = true;
}

Q_EXPORT_PLUGIN2(mymoduleplugin, MyModulePlugin)



2787  Qt / Общие вопросы / Re: Загрузка классов из динамических библиотек??? : Январь 15, 2009, 13:32
2 Steven_Orko

интересненько! Улыбающийся

а D-BUS он же "падучий" (у меня на PC по крайней мере раньше ошибки вылетали частенько с его участием) Улыбающийся т.е применять его - ненадежно в принципе (ИМХО)
2788  Qt / Общие вопросы / Re: Загрузка классов из динамических библиотек??? : Январь 15, 2009, 13:25
2 Dendy

хм.. но в моем случае тогда можно было бы обойтись и без QPluginLoader-a, т.е создать *.Dll в которой была бы аналогичная ф-я ModuleBase * create() ...

и я с помощью QLibrary загружал бы бибриотеку, вызывал бы из нее эту ф-ю и она мне создавала бы объект типа ModuleBase и возвращала на него указатель

и я бы из приложения его приводил к виду  ModuleBase  и работал бы с ним как хочу...

 Строит глазки  ?
2789  Qt / Работа с сетью / Re: SOAP сервер на Qt. : Январь 15, 2009, 11:53
и мне киньте "переработанный qxmlrpc Дмитрия Поплавского"  Улыбающийся
2790  Qt / Общие вопросы / Re: Загрузка классов из динамических библиотек??? : Январь 15, 2009, 11:24
Цитировать
В соответствии с общей схемой сервисы предоставляют интерфейс управления ими: старт, стоп, перезагрузка конфига, получение статуса, пауза и т.д. Придумать можно много.

ну а разве QT-шный подход с плагинами и их интерфейсами это не есть сие???
зачем они придумали интерфейсы, если можно все делать просто загружая динамическую библиотеку и беря из нее нужные ф-ции??
Страниц: 1 ... 184 185 [186] 187 188

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