Qt 使用设置透明窗口B 和窗口A的从属关系,而非父子关系,源码实现窗口B叠加另一个窗口A
时间: 2023-07-19 13:04:11 浏览: 57
在 Qt 中,可以通过设置窗口的属性来实现透明窗口和窗口叠加。具体步骤如下:
1. 设置窗口 A 的透明度为 0,使其完全透明。
```cpp
setWindowOpacity(0);
```
2. 设置窗口 B 的透明度小于 1,使其半透明。
```cpp
setWindowOpacity(0.5);
```
3. 设置窗口 B 的窗口类型为 Qt::Tool,使其不显示标题栏和边框。
```cpp
setWindowFlags(Qt::Tool);
```
4. 将窗口 B 的父窗口设置为窗口 A。
```cpp
setParent(windowA);
```
这样,窗口 B 就会叠加在窗口 A 上,并且窗口 A 会成为窗口 B 的从属窗口,而非父子关系。注意,如果窗口 A 没有设置透明度为 0,那么窗口 B 叠加在窗口 A 上时,窗口 A 的内容仍然会显示出来。
完整的代码示例:
```cpp
#include <QApplication>
#include <QWidget>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 创建窗口 A
QWidget windowA;
windowA.setFixedSize(400, 300);
windowA.setWindowTitle("Window A");
windowA.show();
// 创建窗口 B
QWidget windowB;
windowB.setFixedSize(200, 150);
windowB.setWindowTitle("Window B");
windowB.setWindowOpacity(0.5); // 设置透明度
windowB.setWindowFlags(Qt::Tool); // 设置窗口类型为 Qt::Tool
windowB.setParent(&windowA); // 将窗口 B 的父窗口设置为窗口 A
windowB.show();
return app.exec();
}
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)