Qt cpp 如果 m_pDispWidget 窗口被其他任何窗口遮盖,则m_pARAugmentedRealityOneSenceCover隐藏
时间: 2023-11-28 08:51:24 浏览: 35
可以通过以下方式实现:
```cpp
// 获取m_pDispWidget的全局坐标
QPoint globalPos = m_pDispWidget->mapToGlobal(QPoint(0, 0));
// 获取m_pDispWidget的矩形区域
QRect rect(globalPos.x(), globalPos.y(), m_pDispWidget->width(), m_pDispWidget->height());
// 判断矩形区域是否被其他窗口遮盖
if (!QApplication::desktop()->screenGeometry().intersects(rect)) {
m_pARAugmentedRealityOneSenceCover->hide();
} else {
m_pARAugmentedRealityOneSenceCover->show();
}
```
这里使用 `QApplication::desktop()->screenGeometry()` 获取当前屏幕的矩形区域,然后通过 `intersects()` 函数判断矩形区域是否与 `m_pDispWidget` 的区域有交叉,如果没有交叉,则说明 `m_pDispWidget` 被其他窗口遮盖,此时隐藏 `m_pARAugmentedRealityOneSenceCover` 窗口;否则显示 `m_pARAugmentedRealityOneSenceCover` 窗口。
相关问题
Qt cpp 如果 m_pDispWidget 窗口被其他任何窗口遮盖,则 无父窗口的顶级窗口m_pARAugmentedRealityOneSenceCover隐藏
可以通过监听窗口激活事件来实现这个功能。当其他窗口激活时,判断是否遮盖了m_pDispWidget窗口,如果是,则隐藏m_pARAugmentedRealityOneSenceCover窗口。
具体实现方法如下:
1. 在m_pDispWidget的构造函数中,使用installEventFilter()函数安装事件过滤器,并将事件过滤器对象设置为this:
```
m_pDispWidget->installEventFilter(this);
```
2. 重写事件过滤器的eventFilter()函数,当接收到窗口激活事件时,判断是否遮盖了m_pDispWidget窗口:
```
bool YourClass::eventFilter(QObject *obj, QEvent *event)
{
if (event->type() == QEvent::WindowActivate) {
// 判断是否遮盖了m_pDispWidget窗口
if (m_pDispWidget->isVisible() && m_pARAugmentedRealityOneSenceCover->isVisible()) {
QRect rect1 = m_pDispWidget->geometry();
QRect rect2 = m_pARAugmentedRealityOneSenceCover->geometry();
if (rect1.intersects(rect2)) {
m_pARAugmentedRealityOneSenceCover->hide();
}
}
}
return QObject::eventFilter(obj, event);
}
```
3. 在你的类的构造函数中,将m_pARAugmentedRealityOneSenceCover窗口设置为无父窗口的顶级窗口,并显示出来:
```
m_pARAugmentedRealityOneSenceCover->setWindowFlags(Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint | Qt::WindowDoesNotAcceptFocus);
m_pARAugmentedRealityOneSenceCover->show();
```
这样,当其他窗口遮盖了m_pDispWidget窗口时,m_pARAugmentedRealityOneSenceCover窗口会自动隐藏。
m_pDispWidget->setMask 是什么意思
m_pDispWidget->setMask 是 Qt 框架中 QWidget 类的一个成员函数,用于设置当前窗口部件的遮罩。遮罩可以用来限制窗口部件的绘制区域,只有在遮罩范围内的区域才会被绘制。该函数的参数为一个 QRegion 对象,表示需要设置的遮罩区域。使用遮罩可以实现一些特殊效果,比如圆角窗口、不规则窗口等。
相关推荐
![](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)