2009-06-02 14 views
1

Ich verwende den QPropertyEditor von Qt-Apps.org.Runtime-dynamische Eigenschaften in QPropertyEditor

Ist es möglich, eine Klasse mit exponierten Eigenschaften zu erstellen, in der die Anzahl der Eigenschaften runtime-dynamisch ist? So haben Sie zum Beispiel eine Klasse, die einen Vektor von Floats mit einer beliebigen Länge darstellt, die zur Kompilierzeit nicht bekannt ist. Sie haben also ein

vector<float> myFloats; 

als ein Klassenmitglied. Wie Sie dies als eine Eigenschaft mit dem Makro Q_PROPERTY verfügbar machen. So am Ende möchte ich die folgende Ansicht im Eigenschaftseditor-Widget haben:

  • MyClass
    • Wert von myFloats [0]
    • Wert von myFloats [1]
    • Wert von myFloats [2] ... ...

Danke voraus!

Antwort

3

Durch die Verwendung von dynamic properties ...

In Ihrer Klasse u zur Laufzeit die dynamischen Eigenschaften dieser Klasse

DynamicPropertiesClassForQPropertyEditor() 
{ 
    QVector<int> properties; 
    ///.... fill in thevalues 
    for (int i=0 ; i!=properties.size() ; ++i) 
    { 
     const QString propertyName = QString("value of properties[%1]").arg(i); 
     setProperty(qPrintable(propertyName) ,properties.at(i)); 
    } 
} 
+0

Große einstellen! Es ist so einfach ... –

+0

Nächste Frage;) -> Ist es möglich, eine Funktion aufzurufen, wenn eine dynamische Eigenschaft im PropertyEditor bearbeitet wurde? Da meine Klasse nur ein Wrapper für eine andere Klasse ist, muss ich sicherstellen, dass die andere Klasse aktualisiert wird, wenn eine Eigenschaft im PropertyEditor geändert wird. –

+0

wird ein QDynamicPropertyChangeEvent an das Objekt gesendet – TimW