个人技术分享

在窗口作为子窗口时,setWindowOpacity设置窗口的不透明度可能会失效。

QGraphicsOpacityEffect *opacityEffect = new QGraphicsOpacityEffect(this);
opacityEffect->setOpacity(1.0);
this->setGraphicsEffect(opacityEffect);

// 创建属性动画对象,指定要改变的属性为透明度
QPropertyAnimation *animation = new QPropertyAnimation(opacityEffect, "opacity");

// 设置动画的起始值和结束值
animation->setStartValue(1.0); // 完全不透明
animation->setEndValue(0.0);   // 完全透明

// 设置动画的持续时间,单位为毫秒
animation->setDuration(1000); // 1秒钟

// 启动动画
animation->start();

如果不需要动画效果,可以将动画部分直接去掉,opacityEffect->setOpacity(1.0);这句代码直接控制窗口不透明度。