2010-02-24 64 views
2

嗨,我有一個空閒時刻,所以決定看看Qt,以及我可以輕鬆地將我的Windows應用程序移植到Qt。如何通過Designer創建Qt對象時處理信號?

我唯一真正的問題是需要在Qt下重新實現的幾個控件。我已經處理了控件的基本繪圖,但是我的控件創建了一個子滾動條。問題在於,此滾動條是作爲我的新Widget的一部分動態創建的(即m_Scrollbar是該Widget的成員)。我怎樣才能迴應滾動條的移動。在其他情況下,這很容易,因爲我只需在protected slots下創建一個on_myscrollbar_sliderMoved函數並在那裏處理它。然而,這依賴於QScrollBar被稱爲myscrollbar。由於我動態地創建了對象(即不是通過設計器),我如何捕獲這個信號?

我猜這是非常簡單的,我錯過了明顯的:)

+3

我認爲你需要花更多的時間在Qt文檔。 – erelender 2010-02-24 12:43:01

+0

也許這是真的......但因爲我在一個小時前第一次拿起Qt,所以我認爲我沒有太「太」糟糕:DI喜歡它,雖然......它很容易:) – Goz 2010-02-24 12:48:13

回答

5
connect(myScrollbar, SIGNAL(<signal signature>), this, SLOT(<slot signature>)); 

呼叫建立滾動條後連接(我假定你需要這個信號產生的滾動條後,立即處理)。

我認爲myScrollbar的類型是QScrollBar *,並且該插槽被定義爲類中的成員。

當myScrollbar被銷燬時,連接被刪除(調用斷開連接)。

請參閱QObject :: connect和QObject :: disconnect方法的文檔。

後來編輯 - 更具體的,在你的代碼則可能是:

myScrollbar = new QScrollBar; // Create the scroll bar 
// ... add it to the layout, etc. 
// ... and connect the signal to your slot 
connect(myScrollbar, SIGNAL(sliderMoved(int)), this, SLOT(handleSliderMoved(int))); 

其中handleSliderMoved是你們班的插槽方法。

+0

甜......我知道這將是簡單的事情!乾杯:) – Goz 2010-02-24 12:45:53

相關問題