Sto tentando di emettere una stringa standard con il segnale qt. Il segnale verrà consegnato come in coda. Ho registrato il tipo con qRegisterMetaType, come si dice nella documentazione qt, ma senza fortuna. Sto registrando in questo modo qRegisterMetaType<std::string>("std::string")
emit std :: string con il segnale qt
12
A
risposta
17
Si dovrebbe anche fare:
Q_DECLARE_METATYPE (std::string)
Citando Qt Doc
Aggiunta di una Q_DECLARE_METATYPE() rende tipo noto a tutte le funzioni base di template , incluso QVariant. Si noti che se si intende utilizzare tipo in segnali e slot connessioni in coda o nel sistema di proprietà di QObject, si hanno anche per chiamare qRegisterMetaType() dal momento che i nomi vengono risolti in fase di esecuzione.
Problemi correlati
- 1. emette il segnale Qt dal thread non Qt o il loop di eventi principale di ouside Qt con 4.5
- 2. Qt - nessun errore di segnale
- 3. Segnale Qt virtuale?
- 4. Differenza tra std: string e std :: string
- 5. Errore linker con segnale Qt/Esempio di slot
- 6. Qt invia segnale a thread diversi
- 7. Qt GUI non funziona con std :: thread come previsto
- 8. Segnale C++ allo slot QML in Qt
- 9. Perché non è std :: string :: max_size() == std :: string :: allocator :: max_size()
- 10. SWIG: come avvolgere std :: string & (std :: string passato per riferimento)
- 11. std :: string a LPCTSTR
- 12. strano comportamento di std :: string con unicode
- 13. prestazioni std :: strstr vs. std :: string :: trovare
- 14. type_traits guasto di segmentazione con std :: string
- 15. Qt collegare funzione - disambiguazione segnale utilizzando lambda
- 16. boost :: ifind_first con std :: string objects
- 17. Il creatore qt si ferma sul segnale Linux
- 18. restituendo std :: string/std :: lista da dll
- 19. C++ Segnale Qt e slot non attivo
- 20. Come trasformare System :: String^in std :: string?
- 21. Usando sprintf con std :: string in C++
- 22. std :: vector <std::string> crash
- 23. Ordine di esecuzione del segnale con Qt :: QueuedConnection
- 24. std :: string x (x);
- 25. Ottieni il tipo da std :: string, C++
- 26. Qt forza QCheckBox per emettere il segnale su setChecked
- 27. Qt 4.5 - Il segnale di emissione è una chiamata di funzione o un thread e blocca?
- 28. vantaggio di QString su std :: string
- 29. PyQt uso corretto di emit() e pyqtSignal()
- 30. std :: string :: c_str() e provvisori
Ho provato, ancora non funziona. Inoltre ho molti segnali nel mio progetto che stanno emettendo tipi non qt, e mai Q_DECLARE_METATYPE su di essi, solo qRegisterMetaType, e stanno funzionando. – user152508
Ho appena eseguito un test rapido e l'utilizzo di qRegisterMetaType insieme a Q_DECLARE_METATYPE funziona davvero. Lasciando fuori uno dei due risultati in un messaggio di errore in fase di esecuzione circa la necessità di chiamare qRegisterMetaType. La mia ipotesi è che per gli altri tipi che stai usando non stai usando una connessione in coda. – Chris
ok, stavo usando questo sovraccarico void qRegisterMetaTypeStreamOperators (const char * typeName) forse perché non ha funzionato. Quando ho provato questo overlaod int qRegisterMetaType() con la combinazione di Q_DECLARE_METATYPE funziona, quindi Grazie mille. – user152508