2015-08-21 94 views
2

有沒有辦法來改變懸停/按下圖標爲QDockWidget(QT 4.8)在樣式表?我使用這種風格來更改按鈕圖像的默認狀態:QDockWidget浮動/關閉按鈕懸停圖片

QDockWidget{ 
    font-weight: bold; 
    titlebar-close-icon: url(:/icons/ui-dock-close-off.png); 
    titlebar-normal-icon: url(:/icons/ui-dock-float-off.png); 
} 

我已經嘗試了幾種不同的方法,但他們都不是工作。

QDockWidget::float-button:hover{ 
    image: url(:/icons/icons/ui-dock-float-hover.png); 
} 

QAbstractButton#qt_dockwidget_floatbutton{ 
    image: url(:/icons/icons/ui-dock-float-hover.png); 
} 

回答

2

我只是做了這個工作,我自己。我發現QDockWidget默認標題欄的qss行爲在行爲上非常奇怪。

底部是最終的結果,對我的作品,但首先有一些解釋的事情。

的第一件事是,使用「圖像」設定爲設定的圖標不允許用於設置圖標的尺寸,並且它最終被按比例縮小到最小。因此,我無法按照我想要的方式使用「titlebar-close-icon:none」。

第二個是,您將無法使用「圖像」設置的「QDockWidget ::關閉按鈕:懸停」配對「titlebar-close-icon」設置,因爲「懸停」圖像會在後面畫出的圖標。這可能就是爲什麼你在給定的例子中沒有看到你預期的結果。

我結束了什麼以下所做的是設置一個「空白」(完全透明)PNG作爲圖標,這意味着然後我可以控制使用「圖標大小」設置的按鈕的大小。然後我設置按鈕的「圖像」,並利用「懸停」子設置來處理突出顯示的圖標。

最後,我發現(至少在我的環境),圖標會變爲不沾,除非小部件是浮動的,然後redocked,此時圖標都存在,並佔了。我做了什麼來解決這個問題只是在應用樣式之後調用setFloating(True)然後setFloating(False)。沒有可見的閃爍或我可以看到的任何東西,所以我正在使用它。

QDockWidget { 
    background: rgb(36,38,41); 
    titlebar-close-icon: url(:icons/blank.png); 
    titlebar-normal-icon: url(:icons/blank.png); 
} 

QDockWidget::title { 
    background: transparent; 
    color: transparent; 
    text-align: center; 
    border: none; 
} 

QDockWidget::close-button, QDockWidget::float-button { 
    border: none; 
    background: transparent; 
    icon-size: 12px; 
    padding: 1px; 
} 

QDockWidget::float-button { 
    image: url(:icons/undock.png); 
} 

QDockWidget::close-button { 
    image: url(:icons/close.png); 
} 

QDockWidget::float-button:hover { 
    image: url(:icons/undock_hover.png); 
} 

QDockWidget::close-button:hover { 
    image: url(:icons/close_hover.png); 
}