2012-09-24 61 views
4

我有一個工具按鈕,當我點擊它時(如果啓用),我想禁用它,並在點擊它時啓用它(並禁用它)。問題是,當點擊它時,我寫了相應的插槽並且禁用了按鈕。到目前爲止它正在工作。但是一旦禁用並且您點擊它,它就不會跳轉到插槽,它會永久完全禁用。我使用了錯誤的功能還是錯誤的信號?如何啓用禁用按鈕

... 
bool mEnable = true; 

void Test::OnEnableButtonTriggered() { 
    mEnable = !mEnable; 
    ui.OnEnable->setEnabled(mEnable); 
} 
+1

從用戶的角度來看,什麼是能夠單擊禁用按鈕的好處? –

+0

它就像一個切換按鈕。當然,我可以使用不同的圖標,但我認爲禁用會起作用。想象一下,你想通過點擊這個按鈕來關閉可視化,然後你想打開它。我在很多工具中看到了這個,並且想自己試試 – ISTB

+1

不應該使用可檢查的工具按鈕作爲它的右鍵嗎?當沒有按下時,您的可視化關閉,並​​且用戶需要按下按鈕以打開可視化(並且按鈕保持關閉以可視化其狀態)。 –

回答

3

您不能禁用按鈕觸發直接,但即使你可以,你最有可能不應該想這樣做,因爲這是相當刺激性。

我建議使用QCheckbox來實現你想要實現的目標。

如果你仍然想使用禁用的按鈕,你可能想看看這篇文章:

Qt 4.4: disabled widgets receiving mouse events

+0

但是這個按鈕和其他許多菜單按鈕一起在我的menutoolbar中。使用複選框會有點奇怪,並且需要附近的標籤 – ISTB

+2

我認爲setCheckable可能是我的問題的解決方案:它在點擊它時被推下並保持推動,直到您再次單擊它 – ISTB

+1

在這種情況下,切換工具欄圖標可能更直觀。 但是,您仍然可以使用自定義事件過濾器接收事件。 – Mark