【问题标题】:Underline QLabel's text "on hover"在 QLabel 的文本“悬停时”下划线
【发布时间】:2016-08-14 20:28:54
【问题描述】:

当鼠标光标移到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; }");
}

【问题讨论】:

标签: c++ qt qlabel


【解决方案1】:

根据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);
}

【讨论】:

  • 谢谢。有什么想法可以实现吗?据我所知,没有“mouseHoverEvent”:/
  • @MattiaF。有,但你需要设置鼠标跟踪
【解决方案2】:

您可以使用以下构造:

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

我正在使用它,它的效果非常好。 ;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-08
    • 2013-04-15
    • 2014-02-11
    • 2014-08-30
    • 2013-08-10
    • 2021-01-22
    • 2017-05-19
    • 2020-09-10
    相关资源
    最近更新 更多