1. 程式人生 > >24小時學通Qt之第四學時:槽和訊號

24小時學通Qt之第四學時:槽和訊號

一、問題與答案

1、編譯器報告未找到connect()函式,為什麼?

答:如果呼叫connect()函式而未定義從哪個類中查詢它,將出現這種錯誤。這種呼叫必須在一個QObject派生類的方法內。如果從一個外部函式中呼叫,必須這樣:

QObject::connect();

2、編譯器報告傳遞給connect()函式的引數錯誤,這是為什麼?

答:connect()函式引數使用物件指標,而不是物件自身。因此,必須確認所提供的引數是正確的。

二、測試

1、什麼是槽?

答:槽是一種特殊型別的成員函式,它可以被連線到訊號。當發射訊號時,槽(函式)將被執行。

2、什麼是訊號?

答:訊號是一種特殊型別的函式,它可以被連線到槽。當某個事件發生時,訊號通知槽,之後,槽被執行。

3、怎樣將訊號連線到槽?

答:使用QObject::connect()函式。

4、能否將多個槽連線到一個訊號?

答:這是可能的。只需為每次連線呼叫一次connect()函式。

5、什麼時候能夠呼叫connect()函式而不指定定義它的類?

答:當從派生與QObject或其子類的類成員函式中呼叫時。

6、能夠將被連線的訊號與槽斷開嗎?

答:這是可以的。只需使用QObject::disconnect()函式。

7、在呼叫connect()函式時,省略槽所屬物件名稱意味著什麼?

答:意味著槽在當前類中定義(也就是說,類是當前所定義類)。因此。只能從具有槽的類成員函式中執行這類呼叫。

8、是否能夠將一個訊號連線到其他訊號?如果能,怎麼操作?

答:可以。只需像通常一樣使用connect()函式,如

connect(button,SIGNAL(clicked()),this,SIGNAL(anothersignal());