Seite 1 von 1

Architekturfrage: Drag&Drop mit "toolbox"

Verfasst: 2. Mai 2007 18:51
von piXelshooter
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...

Verfasst: 4. Mai 2007 12:57
von lepsai
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();
}

};