停止QLabel文本混合背景颜色

时间:2016-05-18 09:20:15

标签: qt rendering qwidget antialiasing

简而言之

我试图让我的QLabel中的文字绘制成一幅黑色背景,忽略真实的背景色。

深度

我在绿色小部件中有一个QLabel,文本是消除锯齿和白色的,抗锯齿通过与绿色背景颜色混合来柔化文本的边缘。

硬件检测到确切的绿色,并像绿色屏幕一样使用它来显示一些技术魔法而不会覆盖我的软件覆盖,它会使背景看起来很黑。

消除锯齿的文字有一个模糊的绿色光环,它略微改变了绿色,硬件没有覆盖它。

我想要将文字绘制成好像是在黑色背景上

我尝试了什么

我尝试使用黑色不透明QGraphicsDropShadowEffect在文本下方绘制,从而使文本呈现黑色背景,这会在文本周围形成更大的绿色光环。

我尝试在QBrushQPalette Qt::WindowText的标签Qt::Base中设置各种ColorRole个。

我已经重新实现了paintEvent,我正在尝试使用style()->drawItemText(... )来避免重新实现所有有用的对齐代码。

我尝试拦截QStyleOpt参数并将其QPalette的背景颜色设置为黑色,但是这并没有改变任何内容,我仍然会得到模糊的绿色文本。

我在QBrush中尝试过各种QPenQPainter种颜色。

我真的很接近在QPainterPath函数中使用paintEvent(在扩展QLabel的类中),我在文本后面绘制文本的黑色路径,然后我调用{ {1}}让它在顶部绘制文字。这里的问题是,在某些情况下,路径被裁剪为小于左侧的小部件QLabel::paintEvent,我认为是另一个问题的范围!

我可以尝试但尚未解决

我可以根据this question为文字添加黑色轮廓但是我使用rect()而不是QWidget文字项,然后黑色轮廓仍然可能会混合与绿色背景。

我已经想到并希望避免

的妥协

我可以将QGraphicsView背景设置为黑色,在生成的叠加层上留下黑色的大矩形,不幸的是标签通常比显示的文字大得多。

我可以阻止字体消除锯齿,这看起来很丑陋,它会阻止所有字体在整个产品中保持一致。

0 个答案:

没有答案