在透明的 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 小部件上画一条线的主要内容,如果未能解决你的问题,请参考以下文章