嚴(yán)格定義 Qt 自定義信號(hào)
嚴(yán)格定義 Qt 自定義信號(hào)是本文要講述的內(nèi)容,最近在開(kāi)發(fā)Ice、Qt項(xiàng)目時(shí)發(fā)現(xiàn)了這個(gè)問(wèn)題。在Ice、Qt通信過(guò)程中需要使用自定義信號(hào)。自定義信號(hào)聲明和使用必須嚴(yán)格一致,否則,可能無(wú)法成功發(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,然后在自定義信號(hào)中不帶有命名空間的定義
這兩種情況編譯均能通過(guò),但信號(hào)無(wú)法正常的發(fā)送、接收。
到目前為止,只在自己的項(xiàng)目中發(fā)現(xiàn)這個(gè)問(wèn)題,并以此方式加以解決。但未更深入研究,不知是不是對(duì)其它情況也適用。現(xiàn)在記下來(lái),做為備注吧。
小結(jié):嚴(yán)格定義 Qt 自定義信號(hào)的內(nèi)容介紹完了,在學(xué)習(xí)的過(guò)程中,總是會(huì)遇到很多的問(wèn)題,那么最后希望本篇文章對(duì)你有所幫助。