强调QLabel的文字"在悬停"

时间:2016-08-14 20:28:54

标签: c++ qt 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; }");
}

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

您可以使用以下构造:

QLabel *text= new QLabel("Your text"); text->setStyleSheet("font-weight: bold; color: green; text-decoration: underline");

我正在使用它,效果很好。 ;)