QT4:带圆角的透明窗口

sme*_*lin 21 c++ user-interface qt qt4

如何创建具有圆形边框(无标准边框)的部分透明窗口?

(我Qt::FramelessWindowHint以前禁用标准边框)

我试过样式表,但border-radiusopacity似乎不把窗户上的任何效果,它只能在封闭的小部件的孩子.

我的第二个想法是使窗口完全透明(带setWindowOpacity),然后添加一个带圆角的附加小部件(因为对子节点border-radius起作用),然后将我的所有其他小部件分组到该小部件中.但这不起作用,因为setWindowOpacity影响所有孩子(我还没有找到改变这种行为的方法).

任何使外窗口透明的方法我都能想到(比如样式表opacity)不能正常工作(我只得到一个黑盒而不是透明窗口)

任何帮助将受到高度赞赏.

ctd*_*ctd 16

我有一个类似的问题,我想在一个顶级小部件上绘画,并且只显示绘制的部分.setWindowOpacity更改了绘制部分的不透明度,这是我不想要的.

this->setAttribute(Qt::WA_TranslucentBackground, true);
Run Code Online (Sandbox Code Playgroud)

在没有绘制部分的情况下更改了小部件的不透明度.我只是试着扔一个按钮,这也显示完全不透明.所以你应该能够展示你喜欢的其他孩子.


And*_*y M 7

我认为您应该使用小部件掩码,如以下Qt中的示例所示:

http://doc.qt.io/qt-5/qtwidgets-widgets-shapedclock-example.html

我想你会找到你想要的东西!

希望这个对你有帮助!

  • 让它运作得很好:[code] QPixmap qpm(":/ alphamask.png"); qpm = qpm.scaled(this-> width(),this-> height(),Qt :: IgnoreAspectRatio,Qt :: SmoothTransformation); if(!qpm.isNull())this-> setMask(qpm.mask()); 这 - > setWindowOpacity(0.9); [/码] (2认同)