Bonjour à tous !
Je développe actuellement un widget permettant d'éditer des "propriétés" à la manière d'un QtPropertyBrowser.
J'aimerai bien ajouter une fonction qui, prenant un QObject en paramètre, remplisse le QTreeView automatiquement.
Je rajoute un petit exemple, histoire que vous saisissiez bien :
admettons qu'une classe Point2D contienne deux int en private, myX, myY, et les traditionnels getters/setters : x() const, y() const, setX(int), setY(int).
Mon but est que le QTreeView fasse automatiquement les connections signal/slot. Ainsi, toute modification d'un item de l'arbre appellera setX ou setY sur l'instance de l'objet, c'est selon. J'espère que vous avez compris
Pour cela, je dois récupérer les noms des différents getters/setters d'un objet. J'identifie deux solutions :
- utiliser du tout fait : le système de meta-objet de Qt, et plus précisément le système de propriétés ;
- coder tout moi-même avec des macros. Ce serait je pense la bonne solution : le développeur pourrait choisir lui-même quelles propriétés de sa classe sont éditables dans le QTreeView. Pour vous donner une idée, le prototype de la macro serait calqué sur celui de Q_PROPERTY.
Deux questions donc :
- je ne réussis pas à obtenir le nom du setter d'une propriété en passant par QObject::metaObject(). Mais seulement le nom du getter avec QObject::metaObject()->property(index).name(). Savez-vous comment faire ?
- la 2ème solution vous semble-t-elle appropriée, et faisable sans trop de prise de tête ?
Merci à tous ! (et bonne nuit)
Partager