Bonjour,

Je n'arrive pas à créer de composants Qt dans une DLL.
Mon programme principal est un code C++ non Qt, qui charge une dll personnelle.
Dans celle ci, je crée un QPushButton. Alors déjà pour le créer il faut simuler un QApplication :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
int argc = 1;
char** argv = NULL;
QApplication a(argc, argv);
QPushButton widget("Push Button");
Tout ça dans une unique fonction exportée, ça fonctionne.
Mais, une fois qu'on veut faire plus évolué, c'est la galère : j'ai créé 3 fonctions exportées dans le dll : createWidget, setSizeToWidget, getWidgetRender.
Pour palier au problème de persistance du widget créé entre appels successifs des fonctions, j'ai mis un QPushButton en variable globale (juste pour tester avant de faire une liste de widgets si cela fonctionnait)

Voilà que je lance mon programme...et au moment de créer l'objet il plante :*
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
ASSERT failure in QWidget: "Widgets must be created in the GUI thread.", file kernel\qwidget.cpp, line 1069
Alors, là j'ai lu plusieurs forums, mais à chaque fois la résolution c'est "finalement j'ai tout laissé dans un unique thread"
Moi je n'ai pas de threads, je n'ai qu'une pauvre dll qui crée un QPushButton et renvoi son rendu !

j'ai trouvé ça comme info : http://www.qtforum.org/article/22708...-instance.html mais je ne comprends rien, ça me semble trop complexe pour peu de choses...

J'avais essayé aussi de mettre le QApplication en variable globale mais pareil ça fait des horreurs de compilation

Je pense que le programme principal crée un thread, et que la dll qui crée le QPushButton le fait dans un autre thread ce qui fait le problème, à mon avis.
Comment palier à ce problème de thread SVP ?