【问题标题】:QLabel add 'border' around textQLabel 在文本周围添加“边框”
【发布时间】:2014-10-07 20:40:46
【问题描述】:

是否可以在QLabel 中显示的文本上方和下方添加一个轻微的“边框”?边框不应位于QLabel 的边缘。相反,它应该对显示的文本有一个 10px 的填充。边框的大小将是QLabel 宽度的 75%,从 12.5% 开始。此外,如果文本发生变化,“边框”应该保持不变:

此外,应该仍然可以通过QStylesheet 或其他一些API 设置QLabel 的背景颜色。

【问题讨论】:

    标签: qt qlabel qstylesheet


    【解决方案1】:

    具体的事情太多,很难做到。 如果找不到更好的方法,请使用下一个:

    您可以使用 QPainter 在 pixmap 上绘制所有内容并将此 pixmap 设置为标签。 对于文本:drawText,对于线条drawLine并使用标签的几何形状来设置所需的大小。

    关于背景:

    你还是应该画这些东西,但在此之前使用 fill() 方法来填充像素图。

    【讨论】:

    • QPainter 的性能如何,因为我可能需要每 20-50 毫秒设置一个不同的文本?
    • @Niklas 很快,这是个问题。我现在不能说准确,但是请检查下一个问题的答案(我添加了 CPU 负载示例),因此您可以估算时间(当您快速移动鼠标时 CPU 负载高达 7%)stackoverflow.com/questions/25404709/…
    • 而QLabel支持HTML,但不知道能不能用html做到
    • 到目前为止QPainter 对我来说似乎没问题。你知道我是否可以将文本绘制到中心对齐还是我必须自己计算?
    • 好的,有一个paint.drawText(rect, Qt::AlignCenter, text); 函数。这很整洁。
    猜你喜欢
    • 1970-01-01
    • 2014-09-12
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    • 2015-03-29
    相关资源
    最近更新 更多