2012-09-13 42 views
3

我在Qt中有一個QWidget組合控件,QWidget的QHBoxLayout包含3個子控件(QWidget> QHBoxLayout> 3 QLabels)。在其中一個控件上,這只是一個顯示圖標的QLabel,我希望它在懸停在整個控件上時更改它的圖標。我可以得到它實際上是將鼠標懸停在該圖標時,工作更改Qt中父QWidget懸停狀態的樣式

QLabel#stateIcon { 
    image: url(:/icons/stateNormal); 
} 

QLabel#stateIcon:hover { 
    image: url(:/icons/stateHover); 
} 

不過,我想它顯示懸停圖標,當鼠標任何地方在整個控制。

我試過類似如下:

QLabel#stateIcon::parent:hover { 
    image: url(:/icons/stateHover); 
} 

甚至

QLabel#stateIcon::parent::parent:hover { 
    image: url(:/icons/stateHover); 
} 

希望它會激活父的懸停狀態,但它什麼都不做。

有沒有一種方法可以純粹在樣式表中做到這一點?

如果不是,有沒有辦法將父懸停狀態傳播給代碼中的子代?

回答

0

也許事件處理程序處理QEvent::HoverMoveQEvent::HoverEnterQEvent::HoverLeave,您可以在其中將屬性Qt::WA_Hover設置爲您的標籤。

我沒有嘗試它,但它應該作爲HoverEnter和HoverLeave導致update()函數被調用。