2016-08-14 5 views
2

마우스 커서가 QLabel 이상이 될 때 텍스트를 녹색으로 바꾸고 밑줄을 긋고 싶습니다. 그러나 녹색으로 변하고 밑줄이 그어지지 않습니다.밑줄 QLabel 's text "on on hover"

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

(레이블과 같이하는)'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 "는 지원하지 않습니다 : 의사 상태를 가져가." 색상을 변경하는 것은 평범한 것 같아요.

에뮬레이션하려면 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); 
} 
당신은 QSS를 통해 사용자와 함께 할 수
+0

고마워요. 그 아이디어를 구현하는 아이디어? 내가 아는 한 "mouseHoverEvent"는 없습니다 :/ –

+0

@MattiaF. 거기에,하지만 –

+1

@ 맥아피에 마우스 추적을 설정해야합니다., 대답을 편집. –