Bonjour,

Je cherche à implementer la reflection dans Qt.
J'y arrive un peu mais le resultat n'est pas celui escompté, alors je me tourne vers vous si quelqu'un pourrait avoir des idées.
Recap :
Je dispose d'une classe heritant de qdialog appelée "Devise".
Je la recherche dans l'ensemble des widgets de l'application et si je je la trouve par objectName() alors je luis construis un constructeur.
Voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
 
foreach(QWidget *obj,QApplication::allWidgets ()) 
    {
    	if (obj->objectName()=="Devise")
    	{
    		QMessageBox::information(this,"","Classe trouvée");
    		const QMetaObject *meta = obj->metaObject();
    		QMetaMethod construct = meta->constructor(0);
    		//
    		QGenericArgument parentArg = Q_ARG(QObject*, mdiArea);
 
    		QObject *w = meta->newInstance(parentArg);
    		construct.invoke(obj,parentArg);
    		QObject *w = obj->metaObject()->newInstance(Q_ARG(QObject,this));
    		//const QMetaObject *b = obj->metaObject();
    		//QWidget *w = QMetaObject::staticMetaObject::newInstance( Q_ARG(QObject, MainWindow));
    		//qstatic_cast<QWidget *> (obj) = QMetaObject::newInstance;
    		//obj = dynamic_cast<QWidget *> (w);
    		//mdiArea->addSubWindow(dynamic_cast<QWidget *> (w),Qt::Window);
    		mdiArea->addSubWindow(obj,Qt::Window);
    		obj->show();
   		}
   	}
voilà, certainement j'ai dû m'embrouiller quelque part après plusieurs tests, si quelqu'un a une idée de comment résoudre ce problème que je maîtrise très bien sous C#, ce serait vraiment génial.

Merci de votre compréhension.