Próbuję emitować standardowy ciąg z sygnałem qt. Sygnał zostanie dostarczony w kolejce. Zarejestrowałem typ za pomocą qRegisterMetaType, tak jak to opisano w dokumentacji qt, ale bez powodzenia. Ja rejestracji to jak to qRegisterMetaType<std::string>("std::string")
emitować std :: string z sygnałem qt
12
A
Odpowiedz
17
Należy również zrobić:
Q_DECLARE_METATYPE (std::string)
Cytowanie Qt Doc
Dodawanie Q_DECLARE_METATYPE() sprawia, typu znanego wszystkim szablon funkcji opartych w tym QVariant. Zauważ, że jeśli zamierzamy używać typu, w kolejce sygnałowych i szczelinowych połączeń lub w systemie własności QObject'S, masz również zadzwonić qRegisterMetaType() od nazwy są rozwiązywane przy starcie.
Powiązane problemy
- 1. Różnica między std: string i std :: string
- 2. Konwersja std :: __ cxx11 :: string na std :: string
- 3. Jaka jest różnica między :: std :: string i std :: string?
- 4. std :: string na LPCTSTR
- 5. Jak mogę emitować sygnał z innej klasy?
- 6. Czy wyrażenie "std :: string + char" tworzy kolejny ciąg std :: string?
- 7. operator std :: string() const?
- 8. std :: wektor <std::string> crash
- 9. Różnica między emitować oraz emitują()
- 10. Efektywna konstrukcja std :: string z std :: unordered_set <char>
- 11. QString :: toStdString() wywala na std :: string destructor
- 12. Inicjalizacja wektora std :: string z tablicą
- 13. type_traits błędów segmentacji z std :: string
- 14. Jak skonstruować std :: string z DWORD?
- 15. Uzyskaj typ z std :: string, C++
- 16. Dziwne zachowanie std :: string z unicode
- 17. doładowanie :: ifind_first z std :: string objects
- 18. Korzystanie sprintf z std :: string w C++
- 19. Konwersja z std :: string na bool
- 20. Interakcja Rust z C++ std :: string
- 21. Adres każdego znaku std :: string
- 22. Jak emitować zdarzenia z fabryki
- 23. std :: string :: zastąpienie standardowej implementacji?
- 24. std :: string część do całkowitej
- 25. Uzyskaj ostatni element std :: string
- 26. std :: string s() dziwne zachowanie
- 27. Konwersja uint64_t na std :: string
- 28. konwersja int na std :: string
- 29. usuń spacje w std :: string
- 30. C++ Qt gdzie jest wersja std :: unique_ptr Qt?
Próbowałem, nadal nie działa. Mam również wiele sygnałów w moim projekcie, które emitują typy inne niż qt i nigdy nie robiłem Q_DECLARE_METATYPE na nich, tylko qRegisterMetaType i działają. – user152508
Po prostu wykonałem szybki test i używanie zarówno qRegisterMetaType, jak i Q_DECLARE_METATYPE rzeczywiście działa. Pominięcie jednego z nich powoduje wyświetlenie komunikatu o błędzie wykonania o konieczności wywołania metody qRegisterMetaType. Domyślam się, że w przypadku innych typów, z których korzystasz, nie korzystasz z połączenia w kolejce. – Chris
ok, użyłem tego przeciążenia void qRegisterMetaTypeStreamOperators (const char * typeName) może dlatego, dlaczego to nie zadziałało. Kiedy próbowałem tego overlaod int qRegisterMetaType() z kombinacją Q_DECLARE_METATYPE to działa, więc dziękuję bardzo. – user152508