如何在Qt中找到托盘系统栏的位置
How to find out tray system bar position in Qt?
我正在开发一个跨平台的应用程序,我希望显示一个基于系统托盘停靠的QDialog
。在窗口上只有一个托盘,但它可以停靠在屏幕的任何一边。在Ubuntu上,你有顶部菜单栏和启动器。是否有一种方法来获得这个酒吧的位置(和Ubuntu Unity上的启动器)与Qt?
是否有一种跨平台的方法来获取"任务栏"的位置?启动器在Ubuntu Unity)与Qt?
由于不同的平台api,我们只能依赖Qt,我会尝试找到整个"屏幕"几何形状和"可用"几何形状之间的差异。可用的几何图形基本上是整个屏幕减去系统任务栏的矩形。注意多监视器系统,并提供部件位置,以获得适当的完整和可用的监视器几何。
http://doc.qt.io/qt-5/qdesktopwidget.htmlQRect entireRect =
QApplication::desktop()->screenGeometry(pMyAppWidget);
QRect availRect =
QApplication::desktop()->availableGeometry(pMyAppWidget);
其中availRect
是entireRect
的子集。然后你需要找出entireRect
的哪个区域不在availRect
的内部,这并不复杂。
我提出一个简单的方法来找到一个"减"矩形:
QRegion availRgn(availRect);
QRegion entireRgn(entireRect);
auto rects = entireRgn.subtracted(availRgn).rects();
if (rects.size() > 0) {
// there is a task bar rectangle found
QRect taskBarRect = rects[0];
}
相关文章:
- C++,系统无法执行指定的程序
- 将值指定给向量(2D)的向量中的某个位置
- 使用Unreal C++获取VR耳机的世界位置/方向
- 写入位置0x0000000C时发生访问冲突
- 在UNIX系统中使用DIR查找文件的字节大小
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 错误处理.将系统错误代码映射到泛型
- 当系统的卷被修改时,如何修改WASAPI环回捕获卷
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 如何使用cudaMallocManaged在指针位置初始化对象?(C++)
- 在C++游戏中与库存系统作斗争
- 无法获取webot::PositionSensor对象中位置传感器的值
- 文件系统:复制功能的速度秘诀是什么
- 在系统设置光标位置之前获取和设置光标位置?
- 如何将sql数据库文件从系统位置复制到另一个位置
- 从 boost 1.48 升级到 1.49 具有文件系统路径访问冲突读取位置0x0000000
- 配置文件位置和二进制文件,并构建像autoconf这样的系统
- 当试图获取系统时间时,访问冲突读取位置
- 如何在Qt中找到托盘系统栏的位置