J'essaie d'émettre une chaîne standard avec un signal qt. Le signal sera délivré en file d'attente. J'ai enregistré le type avec qRegisterMetaType, comme il est dit dans la documentation qt, mais pas de chance. Je suis inscris comme ça qRegisterMetaType<std::string>("std::string")
emit std :: string avec le signal qt
12
A
Répondre
17
Vous devez également faire:
Q_DECLARE_METATYPE (std::string)
Citant Qt Doc
Ajout d'un Q_DECLARE_METATYPE() rend le type connu à toutes les fonctions basées sur un modèle , y compris QVariant. Notez que si vous l'intention d'utiliser le type dans le signal et les connexions en file d'attente sous ou système de propriété QObject, vous devez également appeler qRegisterMetaType() puisque les noms sont résolus lors de l'exécution.
Questions connexes
- 1. qt c emit textbrowser
- 2. Interaction Signal-Slot Qt.
- 3. Qt - dessin après avoir reçu le signal
- 4. Emit le signal de la fonction statique non-membre
- 5. std :: function et Signal/Slot system
- 6. en utilisant std :: find_if avec std :: string
- 7. erreur avec std :: ostringsteam et std :: string
- 8. Problème avec std :: string :: find()
- 9. Crash initialisant std :: String
- 10. Qt signal à l'emplacement de l'objet spécifique
- 11. Qt - aucune erreur de signal
- 12. Convertir std :: string en QString
- 13. std :: vector <std::string> crash
- 14. C++ std :: string et string
- 15. ne peut pas se connecter signal QT
- 16. erreur C2440: '=': impossible de convertir 'std :: string []' en 'std :: string []'
- 17. QT Signal Slot Question
- 18. C++ différence entre std :: string nom et std :: string & name
- 19. Signal Qt virtuel?
- 20. Pourquoi std :: string :: max_size() == std :: string :: allocator :: max_size()
- 21. Signal Qt enveloppé dans un ifdef
- 22. Qt signal avec une enum comme paramètre
- 23. char * to std :: string
- 24. std :: string :: longueur() par rapport à std :: string :: size()
- 25. std :: string s = (std :: string) "a" + "b" + "c"; D'accord?
- 26. ctypes python std :: string
- 27. Emettre un signal Qt à partir d'une boucle d'événement principal Qt Thread ou Qt non Qt à 4,5
- 28. std :: string + = opérateur
- 29. LPWSTR vers std :: string?
- 30. std :: string à LPOLESTR
J'ai essayé, ne fonctionne toujours pas. De plus, j'ai de nombreux signaux dans mon projet qui émettent des types non qt, et jamais Q_DECLARE_METATYPE sur eux, seulement qRegisterMetaType, et ils fonctionnent. – user152508
Je viens de faire un test rapide, et en utilisant à la fois le qRegisterMetaType avec Q_DECLARE_METATYPE fonctionne en effet. L'omission de l'un des deux entraîne un message d'erreur d'exécution au sujet de l'appel de qRegisterMetaType. Je suppose que pour les autres types que vous utilisez, vous n'utilisez pas une connexion en file d'attente. – Chris
ok, j'utilisais cette surcharge qRegisterMetaTypeStreamOperators (const char * typeName) peut-être que cela n'a pas fonctionné. Quand on a essayé this overlaod int qRegisterMetaType() avec la combinaison de Q_DECLARE_METATYPE cela fonctionne, donc merci beaucoup. – user152508