嚴(yán)格定義 Qt 自定義信號
嚴(yán)格定義 Qt 自定義信號是本文要講述的內(nèi)容,最近在開發(fā)Ice、Qt項目時發(fā)現(xiàn)了這個問題。在Ice、Qt通信過程中需要使用自定義信號。自定義信號聲明和使用必須嚴(yán)格一致,否則,可能無法成功發(fā)送、接收消息。比如,在定義中:
- signals:
- void sendResponseSeq(const CoachStation::BusAttendanceSeq&);
在使用中:
- qRegisterMetaType<CoachStation::BusAttendanceSeq>("CoachStation::BusAttendanceSeq");
- connect(this, SIGNAL(sendResponseSeq(const CoachStation::BusAttendanceSeq&)),
- _widget, SLOT(OnIceResponseSeq(const CoachStation::BusAttendanceSeq&)), Qt::QueuedConnection);
1、兩者必須都為const,
2、如果有namespace的話,必須加嚴(yán)格限定。若
using namespace,然后在自定義信號中不帶有命名空間的定義
這兩種情況編譯均能通過,但信號無法正常的發(fā)送、接收。
到目前為止,只在自己的項目中發(fā)現(xiàn)這個問題,并以此方式加以解決。但未更深入研究,不知是不是對其它情況也適用?,F(xiàn)在記下來,做為備注吧。
小結(jié):嚴(yán)格定義 Qt 自定義信號的內(nèi)容介紹完了,在學(xué)習(xí)的過程中,總是會遇到很多的問題,那么最后希望本篇文章對你有所幫助。