问题遇到的现象和发生背景
C++/QT下,窗口置顶导致透明背景无法设置
遇到的现象和发生背景,请写出第一个错误信息
此窗口的底窗口为设置透明窗口,叠加显示主layout,正常启动显示正常,包括无边框、透明背景和阴影。现加入一个窗口置顶按钮,用户通过点击此按钮实现锁定窗口置顶和解锁窗口置顶。现代码如下,当用户点击时窗口正常置顶或取消置顶,但背景变黑,即使再加入背景透明设置代码也无济于事,求解!
如图为正常运行:
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
void CodeBook::on_setTopHint() {
if (!isWidTop) {
QWindow* pWin = this->windowHandle();
pWin->setFlags(Qt::Widget | Qt::WindowStaysOnTopHint);
this->setAttribute(Qt::WA_TranslucentBackground, true);
cbWid->setBtnLockState(true);
qDebug() << u8"CodeBook001: 切换窗口为最顶层";
}else {
QWindow* pWin = this->windowHandle();
pWin->setFlags(Qt::Widget);
this->setAttribute(Qt::WA_TranslucentBackground, true);
cbWid->setBtnLockState(false);
this->show();
qDebug() << u8"CodeBook001: 取消窗口为最顶层";
}
isWidTop = !isWidTop;
}
运行结果及详细报错内容
如图为点击置顶按钮后,窗口置顶但背景不再透明:
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
尝试通过以下代码解决,但未能达到理想效果:
this->setWindowFlags(Qt::WindowStaysOnTopHint);
this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowMinMaxButtonsHint);
this->setAttribute(Qt::WA_TranslucentBackground, true);
this->show();