J'essaye d'écrire un ensemble de widget personnalisé en tant que plugin Qt Designer. Certaines propriétés sont identiques pour tous mes widgets, donc je veux créer une classe de base. Mais il y a un problème avec l'héritage multiple, quand la classe de base hérite de QObject (à cause de la macro Q_PROPERTY pour rendre ses propriétés éditables dans Qt Designer) et que le widget personnalisé doit être un enfant de QWidget. Mais j'ai trouvé la propriété dynamique de Qt donc la classe de base obtient le pointeur du widget et définit la propriété dynamique.Qt Designer plugin personnalisé et propriétés dynamiques
class BaseClass {
QWidget *widget;
BaseClass(QWidget *widget) {
this->widget = widget;
this->widget->setProperty("Some", 0.0);
}
void setSome(double some) {
this->widget->setProperty("Some", some);
}
...
Ceci est correct. Je peux définir la propriété dynamique et les voir et les éditer dans Qt Designer, tout va bien. MAIS quand je veux lire de la propriété quelque chose ne va pas. Lorsque j'utilise:
this->widget->property("Some").value<double>();
Qt Designer ne démarre pas (?!).
Et quand j'utilise ce plus d'une fois
QVariant var = this->widget->property("Some");
return var.toDouble();
Ce problème est le même! Qt Designer ne parvient pas à démarrer sans message ou autre indice. J'utilise Qt 4.7.4 avec son concepteur. Le même proble est dans le concepteur Qt Creators (testé sur 2.0.0, 2.0.1).
Ai-je tort ou c'est le problème de Qt?
Merci pour vos suggestions!
Vous définissez la valeur bool et la lecture comme double - cela ne fonctionnera probablement pas. – larsmoa
Oups désolé, c'est une erreur ... Merci. Je lis et j'écris le bon type, c'est réécrire "épeler" Je vais le corriger ... – tomicious
Il est corrigé maintenant ... Merci encore – tomicious