在透明的 qt 小部件上画一条线

Posted

技术标签:

【中文标题】在透明的 qt 小部件上画一条线【英文标题】:Drawing a line on transparent qt widget 【发布时间】:2012-09-24 11:20:43 【问题描述】:

我想实现这个:

    具有一定宽度和高度的透明表面(透明小部件) 在这个表面上画一些东西,这样只有那个图形的轮廓在屏幕上可见,没有其他东西(我正在绘制的表面的背景不应该在那里)

我制作了一个小部件并实现了像这样使其透明:

window.setAttribute( Qt::WA_TranslucentBackground);
window.setWindowFlags (Qt::FramelessWindowHint);
window.setGeometry( 0,0,1200, 800 );
window.show();

然后我覆盖了函数paintEvent(QPaintEvent *);使用 QPainter 制作椭圆。

但表面仍然只是黑色。谁能解释一下?

【问题讨论】:

【参考方案1】:

看起来与我在类似应用中所做的相似,但我也做了:

window.setAutoFillBackground(false);

也许这就是你缺少的部分?

编辑:另一个想法:在您的paintEvent 中,您是否在绘制椭圆之前用完全透明的颜色填充小部件rect()

【讨论】:

谢谢 Stefan,我也试过了,但没用,还是黑色背景。 圣烟!它开始工作了.. 不幸的是,我已经删除了我昨天尝试的代码,所以不能说是什么使它工作,但是是的,它现在正在工作。也许正如你所说,我可能一直在绘制一个矩形并填充它。现在我只是直接画椭圆painter.drawEllipse(rectangle);谢谢。

以上是关于在透明的 qt 小部件上画一条线的主要内容,如果未能解决你的问题,请参考以下文章

QT中的透明小部件

在 UIViewController 上画一条线

Qt不透明色刷?

如何使用 fabric.js 在画布上画一条线

HTML5 Canvas - 如何在图像背景上画一条线?

在 svg 图像上画一条线