2010-02-08 49 views
5

假設我有一個QPushButton小部件通過它的clicked()信號連接到一個插槽。第一個插槽輪流使用emit關鍵字調用另一個插槽。第二個插槽從第一個插槽獲取參數並對其執行操作。它的工作,但從我瞭解的信號插槽模式,它只有發出信號是有意義的。發出一個插槽而不是信號是錯誤的嗎?Qt - 發送插槽而不是信號

回答

8

如果你看一下emit的定義,你可以看到它是空的。發射僅用於指示信號在該線路上發射。因此,發射一個插槽是沒有意義的。

插槽是常規函數,您可以明確地調用它們。

5

是的。一個插槽是一個功能。您可以簡單地使用C++ doSlotAction(params);中的任何其他函數調用插槽。只有信號應該遵循emit關鍵字。

+0

這表達了錯誤的意思。發射實際上表達了發送信號的意義和被回調的連接槽,其中_keyword_發射本身並沒有什麼,只是爲了更好的可讀性。 – drahnr

3

只是爲了完成前面的答案,信號是moc實現的真正的保護方法,它是元對象編譯器。