2009-08-31 78 views

回答

7

創建QAction時,您將其傳遞給QIcon。雖然我自己沒有嘗試過,但我注意到QIcon有一個功能void QIcon::addPixmap (const QPixmap & pixmap, Mode mode = Normal, State state = Off)Mode可以是Normal,Disabled,ActiveSelected之一。因此,我相信這樣的事情會的工作:

QPixmap enabled_icon("enabled.png"); 
QPixmap disabled_icon("disabled.png"); 
QIcon icon(enabled_icon); 
icon.addPixmap(disabled_icon, QIcon::Disabled); 
QAction action(icon, "&Menu action..."); 

我有興趣學習這實際上做的工作。我從來沒有到過測試它,但它似乎正是這個設計的用途。

+0

這是做到這一點的正確方法,但我反對使用兩種完全不同的圖標相同的操作建議 - 它往往混淆用戶界面。 – Thomi 2009-09-09 11:43:57

+0

@Thomi如何添加顯示項目是否激活的顏色? – Yash 2016-04-30 15:00:41

0

連接一個插槽來指示QAction :: changed(),如果啓用或禁用該操作,則在那裏設置圖標。 (你可以通過繼承QAction並在子類中添加插槽,將其連接到構造函數中來實現)。

0

如果有人找同樣的事情采取行動的國家的toogle

QIcon icon; 
icon.addPixmap(selectedPixmap, QIcon::Normal,QIcon::On); 
icon.addPixmap(normalPixmap, QIcon::Normal,QIcon::Off); 
相關問題