2016-08-14 593 views
2

當鼠標光標經過QLabel時,我想將文本變爲綠色並加下劃線,但它只是變成綠色,並沒有下劃線。下劃線QLabel的文字「懸停」

QLabel:hover { color: green; text-decoration: underline;} 

我在做什麼錯?

編輯: 固定,我使用:

void QClickableLabel::enterEvent (QEvent *event) 
{ 
    Q_UNUSED (event); 
    setStyleSheet ("QLabel { color: green; text-decoration: underline; }"); 
} 

void QClickableLabel::leaveEvent (QEvent *event) 
{ 
    Q_UNUSED (event); 
    setStyleSheet ("QLabel { color: black; }"); 
} 
+0

您可以通過QSS定製做(看起來像標籤)'QToolButton':http://stackoverflow.com/questions/18250591/how-to-style-pushbuttons-image-size-on- hover-pressed -in-qt4-using-css/18251809#18251809 –

+0

你需要'setMouseTracking(true);' –

回答

2

根據Qt documentation(對於Qt的4和Qt 5),QLabel 「不支持:hover僞狀態」。猜猜它是偶然的運氣,它甚至會改變顏色...

爲了模擬,你可以創建一個QLabel子類並將它推廣到它。然後執行enterEvent()leaveEvent()方法,對小部件進行必要的更改,例如,

void MyLabel::enterEvent(QEvent* event) 
{ 
    QFont f = font(); 
    f.setUnderline(true); 
    setFont(f); 
} 

void MyLabel::leaveEvent(QEvent* event) 
{ 
    QFont f = font(); 
    f.setUnderline(false); 
    setFont(f); 
} 
+0

謝謝。任何想法來實現呢?據我所知,沒有「mouseHoverEvent」:/ –

+0

@MattiaF。有,但你需要在 –

+1

@MattiaF上設置鼠標跟蹤,編輯答案。 –