通過connect連接一個信號到子類的一個槽函數卻提示父類沒有對應的槽函數。
子類中切記要加注釋處的那個宏。不然運行時可能會出現父類中無相應槽函數的提示,并且槽函數不會被信號觸發。 某些高版本的Qt可以識別出這個宏缺少的錯誤,并在編譯時報出來。但5.1及以下版本就不好說了。
個人的理解是用connect時,Child對象中只有父類對象部分表現出QObject的特征,可以用connect進行信號槽的連接。而父類中沒有此槽函數,所以會報出這個提示。要解決這個“定位錯誤”的問題,就要讓編譯器知道Child類也有QObject的特征。也即不僅要派生自QObject類,同時也要添加Q_OBJECT宏。
添加了2個虛函數,是為了讓對象中產生虛表指針,生成動態類型信息。
新聞熱點
疑難解答