J'essaie d'exécuter une méthode sur le thread graphique en utilisant QMetaObject :: invokeMethod, qui renvoie true. Mais, si j'utilise Qt :: QueuedConnection, ma méthode n'est jamais appelée (même si invokeMethod renvoie true).QMetaObject :: invokeMethod renvoie la valeur true, mais la méthode n'est jamais appelée
C'est ce que j'utilise:
QMetaObject::invokeMethod(this, "draw_widgets", Qt::QueuedConnection)
Je ne reçois aucun message d'erreur ou quoi que ce soit ... Si j'utilise Qt :: AutoConnection ou Qt :: DirectConnection la méthode ne soit appelée , mais du même fil bien sûr. Pas du fil de l'interface graphique, ce dont j'ai besoin. Draw_widgets est un espace public de type void draw_widgets() et ma classe hérite de QObject et utilise également la macro Q_OBJECT.
J'apprécierais toute aide à ce sujet, ou sur la façon de vérifier pourquoi la méthode n'est pas appelée.
Merci.
J'ai une situation similaire : J'ai une classe qui hérite de QObject et utilise 'Q_OBJECT'. L'instance de cette classe est créée dans la boucle principale. Ensuite, lors de l'exécution d'une méthode de la même classe dans la boucle principale, j'appelle 'QMetaObject :: invokeMethod (this," hideListsSlot ", Qt :: QueuedConnection);', où 'void hideListsSlot()' est un emplacement public de la classe. L'emplacement n'est jamais invoqué. – Giorgio