Tôi đang cố gắng phát ra chuỗi chuẩn với tín hiệu qt. Tín hiệu sẽ được phân phối dưới dạng xếp hàng đợi. Tôi đã đăng ký loại với qRegisterMetaType, giống như nó đã nói trong tài liệu qt, nhưng không có may mắn. Tôi đăng ký nó như thế này qRegisterMetaType<std::string>("std::string")
phát ra std :: chuỗi với tín hiệu qt
12
A
Trả lời
17
Bạn cũng nên làm:
Q_DECLARE_METATYPE (std::string)
Trích dẫn Qt Doc
Thêm một Q_DECLARE_METATYPE() làm cho các loại tiếng cho tất cả các mẫu chức năng dựa, bao gồm cả QVariant. Lưu ý rằng nếu bạn có ý định sử dụng loại trong tín hiệu và khe cắm kết nối xếp hàng đợi hoặc trong hệ thống tài sản QObject của, bạn cũng phải gọi qRegisterMetaType() kể từ khi tên được giải quyết trong thời gian chạy.
Các vấn đề liên quan
- 1. Qt QNetworkAccessManager không phát ra tín hiệu
- 2. Qt buộc QCheckBox phát ra tín hiệu trên setChecked
- 3. tín hiệu qt undefined reference error
- 4. Tín hiệu Qt (QueuedConnection và DirectConnection)
- 5. Tín hiệu Qt & câu hỏi thừa kế
- 6. Qt 4.5 - Phát ra tín hiệu một cuộc gọi chức năng, hoặc một luồng, và nó có chặn không?
- 7. Gỡ lỗi tín hiệu Qt, khe và kết nối
- 8. Tín hiệu Qt và Slots đối tượng ngắt kết nối?
- 9. Trực quan hóa Tín hiệu và Slots QT
- 10. Sử dụng phát ra vs gọi một tín hiệu như thể đó là một chức năng thường xuyên trong Qt
- 11. Gửi tín hiệu từ phương thức lớp tĩnh trong Qt
- 12. Cách sử dụng enums trong tín hiệu và khe Qt
- 13. Connect QML tín hiệu C++ 11 khe lambda (Qt 5)
- 14. Qt sử dụng tăng :: shared_ptr trong tín hiệu/khe
- 15. Tín hiệu Qt và Khe cắm được kết nối hai lần ... điều gì sẽ xảy ra?
- 16. Làm thế nào để tự tạo ra tín hiệu điều khiển khác phát ra?
- 17. sử dụng tín hiệu tăng thay vì qt
- 18. Qt thực hiện tín hiệu và khe như thế nào?
- 19. Tín hiệu C++ vào khe QML trong Qt
- 20. Kết nối với QNetworkReply :: tín hiệu lỗi
- 21. Qt - trộn Qt và std :: C++ loại
- 22. Nếu tín hiệu Qt được phát ra trong rừng và không có ai ở xung quanh để nghe nó, nó có tạo ra âm thanh không?
- 23. Xác định các tín hiệu được kết nối với một khe nhất định trong Qt
- 24. Không hiệu quả khi phát ra QByteArray?
- 25. PySide/Qt: Có quá nhiều đối số để kết nối tín hiệu với khe?
- 26. Kết nối tín hiệu với các khe có ít thông số được phép trong Qt?
- 27. Tín hiệu phát ra nếu tất cả các tiện ích con bị mất tiêu điểm
- 28. Tín hiệu sự kiện được phát ra hai lần mỗi lần
- 29. Khe được gọi nhiều lần mỗi lần phát ra tín hiệu
- 30. Nhận tín hiệu âm thanh loa và sau đó phát trực tuyến ra
Tôi đã thử, vẫn không hoạt động. Ngoài ra tôi có nhiều tín hiệu trong dự án của tôi đang phát ra các loại qt không và không bao giờ thực hiện Q_DECLARE_METATYPE trên chúng, chỉ qRegisterMetaType và chúng đang hoạt động. – user152508
Tôi vừa làm một bài kiểm tra nhanh và sử dụng cả qRegisterMetaType cùng với Q_DECLARE_METATYPE thực sự hoạt động. Rời một trong hai kết quả trong một thông báo lỗi thời gian chạy về việc cần gọi qRegisterMetaType. Tôi đoán là đối với các loại khác bạn đang sử dụng, bạn không sử dụng kết nối Queued. – Chris
ok, tôi đã sử dụng này quá tải void qRegisterMetaTypeStreamOperators (const char * typeName) có thể là lý do tại sao nó không hoạt động. Khi cố gắng này overlaod int qRegisterMetaType() với sự kết hợp của Q_DECLARE_METATYPE nó hoạt động, vì vậy Cảm ơn bạn rất nhiều. – user152508