so hab mir mal die Klassen Definitionen so wie ich mir das zur Zeit vorstelle geschrieben bitte schaut es euch mal an und schreibt eure Meinungen, Kritiken dazu.
die Property Klasse wo die Eigenschaften abgespeichert werden:
Code:
class Property
{
enum Type {Path, List}; // speziele Wert Typen
public:
void insert(const QString& name, const QString& label, const QVariant& value);
QString name(int); // ID für die xml Datei
QString label(int); // Angezeigter Name
QVariant value(int); // Wert der Eigenschaft
bool isVisible(int);
bool hasReset(int);
int indexOf(const QString&);
int count() const;
Type type();
void setVisible(int, bool);
void setValue(int, const QVariant);
void reset(int, bool); // Setzt den Wert zurück
private:
struct PropertyItem
{
QString name;
QString label;
QVariant value;
QVariant defaultValue;
bool visible;
};
QMap <int, PropertyItem> m_properties;
};
Die generelle Graphic Item Klasse wo jedes Grafik Klasse von abgeleitet wird.
Code:
class GraphicItem : public QGraphicsItem
{
public:
~GraphicItem();
virtual void propertyInit() = 0;
virtual void propertyChange(const QString&, const QVariant&) = 0;
inline Property* property() { return &m_property; };
private:
Property m_property;
};
und hier als beispiel dann mal eine Graphik Klasse müsste ich dann für jede einzelne Graphik Klasse dann machen
Code:
class GraphicLine : public QGraphicsLineItem, GraphicItem
{
public:
inline void propertyInit()
{
property()->insert("pos", "Position", QPoint(20, 20));
property()->insert("size", "Größe", QSize(200, 200));
// usw.
}
inline void propertyChange(cosnt QString& name, const QVariant& value)
{
int id;
id = property()->indexOf(name);
property->setValue(id, value);
}
};
Danke schnomal fürs Anschauen.
Gruss,
xmarvel
Lesezeichen