Qt 要求 窗口B不是窗口A的子窗口,透明窗口B一直覆盖在窗口A上方,源码实现
时间: 2023-07-19 20:03:19 浏览: 44
可以使用 `Qt::WindowStaysOnTopHint` 属性来实现窗口B一直覆盖在窗口A上方的效果,同时使用 `Qt::FramelessWindowHint` 属性来去掉窗口B的边框,使其成为透明窗口。
以下是一个简单的示例代码:
```cpp
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 创建窗口A
QWidget windowA;
windowA.setGeometry(100, 100, 400, 300);
windowA.show();
// 创建窗口B
QWidget windowB;
windowB.setGeometry(150, 150, 200, 150);
windowB.setWindowFlags(Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint);
windowB.setAttribute(Qt::WA_TranslucentBackground); // 设置透明背景
windowB.show();
return app.exec();
}
```
在这个示例中,窗口B通过设置 `Qt::WindowStaysOnTopHint` 属性来保持在窗口A的上方,同时通过设置 `Qt::FramelessWindowHint` 属性来去掉窗口B的边框,使其成为透明窗口。同时,通过 `setAttribute(Qt::WA_TranslucentBackground)` 来设置窗口B的背景为透明。