【问题标题】:QToolTip background-color is not clipped with border radiusQToolTip 背景颜色不被边框半径剪裁
【发布时间】:2018-09-07 23:12:38
【问题描述】:

我的工具提示样式是这样的(不是那种颜色)

QToolTip {
    border: 1px solid blue;
    border-radius: 10px;
    background-color: red;
}

但是背景没有剪掉边角:

为什么没有剪裁?

【问题讨论】:

    标签: qt qtstylesheets qtooltip


    【解决方案1】:

    在提出您的问题两年后,在同一个问题上苦苦挣扎,通过实验和艰苦的谷歌搜索,我得出了以下结论:

    • 仅使用 css 无法获得所需的内容,而小部件则无法获得
    • QToolTip 实际上是一个 QLabel
    • 实现自定义工具提示有点多,但只是一点点:setAttribute(Qt::WA_TranslucentBackground); + setMask() 工作正常,以及实现小部件透明度的其他更简单的方法

    最后,如果你真的喜欢它,递归遍历小部件的子级并安装事件过滤器可能是一个足够的解决方案,例如:

    if (event->type() == QEvent::ToolTip) {
        QHelpEvent *helpEvent = static_cast<QHelpEvent *>(event);
        // Your code here
        return true;
    }
    

    如果您不希望到处都有这些工具提示,那就更容易了。有时您已经不得不做一些类似的事情来将复杂的 CSS 样式从文件应用到动态创建的小部件,但无论如何这不是“无代码解决方案”。唉,到目前为止找不到更好的方法。

    【讨论】: