Hallo,
Das Szenario: Ich möchte eine Toolbox machen (dazu denke ich im mom an ein QListWidget), aus dem man Objekte, die dort als String angezeigt werden, in ein Fenster (eine QGraphicsScene) gezogen werden. Dort soll dann das entsprechende Symbol aufgebaut aus den grundelementen erscheinen.
Das Problem: Mein aktueller denkansatz ist, das QListWidget gibt dem MIME typ einen string mit, und je nach string entscheidet dann die Szene, welches Objekt sie erzeugen soll.
Schlecht insofern, als dass neue Symboltypen mehrfach registriert werden müssten, nämlcih einmal in der Liste, um den String zuzuweisen, und einmal in der Szene, um den String zu dekodieren.
Ich stehe gerade iwie auf dem Schlauch, sowas möglichst einfach und v.a. flexibel zu lösen...
Architekturfrage: Drag&Drop mit "toolbox"
-
piXelshooter
- Beiträge: 43
- Registriert: 25. März 2007 21:19
Nun, Im Grunde willste eine Factory benutzen, etwa so:
class MyObjectFactory
{
public:
Object* createObject(const std::string& factoryId);
public:
static bool registerCreator(const std::string& factoryId, ObjectCreator* creator);
protected:
static std::map<std::string, ObjectCreator*> s_creatorMap;
};
class ObjectCreator
{
virtual Object* create() const = 0;
};
class MyTypeCreator: public ObjectCreator
{
public:
virtual Object* create() const{
return new MyType();
}
};
class MyObjectFactory
{
public:
Object* createObject(const std::string& factoryId);
public:
static bool registerCreator(const std::string& factoryId, ObjectCreator* creator);
protected:
static std::map<std::string, ObjectCreator*> s_creatorMap;
};
class ObjectCreator
{
virtual Object* create() const = 0;
};
class MyTypeCreator: public ObjectCreator
{
public:
virtual Object* create() const{
return new MyType();
}
};