前言
- 不同的项目的需求往往迥然不同,对于透明度设置更是如此,因此本文就开发过程中遇到的透明度设置问题进行小小的总结。
透明度设置
setWindowOpacity
- 可以改变当前窗口的透明度,但是该窗口的子控件都会变透明
setAttribute
- 使用setAttribute(Qt::WA_TranslucentBackground),可以将窗口设置成完全透明,但是不可以设置成半透明。
- 使用setAttribute(Qt::WA_TranslucentBackground)设置窗口透明,需要同时将窗口设置成无边框。
- 这种方法设置后窗口将完全透明,鼠标将穿透窗口,但子控件正常显示,不受影响。
QPainter和painterEvent
- 使用QPainter设置窗口透明度,需要先用setAttribute的办法将窗口设置成完全透明,然后在透明窗口上绘制上自定义的透明颜色。
// 窗口无边框
this->setWindowFlag(Qt::FramelessWindowHint);
// 窗口透明
this->setAttribute(Qt::WA_TranslucentBackground)