Qt 使用设置透明窗口B 和窗口A的从属关系,而非父子关系,源码实现窗口B叠加另一个窗口A
时间: 2023-07-19 17:04:11 浏览: 75
在 Qt 中,可以使用 `setWindowOpacity()` 函数来设置窗口的透明度。如果要实现窗口 B 叠加在窗口 A 上面,可以先将窗口 A 设置为透明,然后将窗口 B 设置为非透明,并调整窗口 B 的位置,使其与窗口 A 重叠。
以下是示例代码:
```c++
// 创建窗口 A
QMainWindow *windowA = new QMainWindow();
windowA->setWindowTitle("Window A");
// 设置窗口 A 的透明度为 0.5
windowA->setWindowOpacity(0.5);
// 创建窗口 B
QMainWindow *windowB = new QMainWindow();
windowB->setWindowTitle("Window B");
// 设置窗口 B 的透明度为 1.0 (非透明)
windowB->setWindowOpacity(1.0);
// 将窗口 B 放置在窗口 A 上方
windowB->move(windowA->pos());
windowB->show();
// 显示窗口 A
windowA->show();
```
在这个示例中,我们创建了两个 QMainWindow 类型的窗口,分别为 windowA 和 windowB。首先,我们将窗口 A 的透明度设置为 0.5,然后将窗口 B 的透明度设置为 1.0,使其非透明。接着,我们将窗口 B 的位置设置为和窗口 A 相同,并显示它。最后,我们显示窗口 A。
这样,窗口 B 就会叠加在窗口 A 上方。请注意,我们没有使用父子关系,而是使用了位置关系来实现窗口 B 的从属关系。
阅读全文