Qt 如何判断QWidget 被遮挡,被部分遮挡
时间: 2023-12-03 22:42:09 浏览: 426
Qt 实现被鼠标悬浮的图片放大显示
5星 · 资源好评率100%
在Qt中,可以使用`QWidget::isHidden()`函数判断一个`QWidget`是否被隐藏,如果返回`true`则表示该窗口被完全遮挡。如果希望判断一个`QWidget`被部分遮挡的情况,可以使用以下方法:
1. 使用`QWidget::rect()`获取该窗口的矩形区域。
2. 使用`QWidget::mapToGlobal()`将该窗口的坐标系转换为全局坐标系。
3. 使用`QApplication::desktop()->screenGeometry()`获取当前屏幕的矩形区域。
4. 判断该窗口的矩形区域是否完全包含在当前屏幕的矩形区域内,如果完全包含则表示该窗口未被遮挡,如果只是部分包含则表示该窗口被部分遮挡。
示例代码如下:
```cpp
bool isPartiallyVisible(QWidget* widget)
{
QRect widgetRect = widget->rect();
QPoint globalPos = widget->mapToGlobal(QPoint(0, 0));
QRect screenRect = QApplication::desktop()->screenGeometry(globalPos);
return screenRect.intersects(widgetRect) && !screenRect.contains(widgetRect);
}
```
使用该函数可以判断一个`QWidget`是否被部分遮挡。
阅读全文