2009-06-02 4 views
1

J'utilise QPropertyEditor à partir de Qt-Apps.org.Propriétés dynamiques à l'exécution dans QPropertyEditor

est-il possible de créer une classe avec des propriétés exposées où la quantité de propriétés est dynamique à l'exécution? Ainsi, par exemple, vous avez une classe qui représente un vecteur de flottants avec une longueur arbitraire qui n'est pas connue au moment de la compilation. Vous avez donc

vector<float> myFloats; 

en tant que membre de la classe. Comment exposer cela en tant que propriété avec la macro Q_PROPERTY. Ainsi, à la fin, je voudrais avoir la vue suivante dans le widget éditeur de propriété:

  • MyClass
    • valeur de myFloats [0]
    • valeur de myFloats [1]
    • valeur de myFloats [2] ... ...

Merci à avance!

Répondre

3

En utilisant dynamic properties ...

Dans votre classe u peut mettre à exécution les propriétés dynamiques de cette classe

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

Great! C'est si facile ... –

+0

Question suivante;) -> Est-il possible d'appeler une fonction lorsqu'une propriété dynamique a été éditée dans PropertyEditor? Comme ma classe n'est qu'un wrapper pour une autre classe, je dois m'assurer que l'autre classe est mise à jour quand une propriété est modifiée dans ProperyEditor. –

+0

un QDynamicPropertyChangeEvent est envoyé à l'objet – TimW

Questions connexes