Qt在X11上错误地恢复几何体

时间:2013-01-11 15:58:52

标签: qt x11 ubuntu-unity

我在Xorg 1.13.1上使用Qt 4.8.4。我将按照文档中建议的相同方式保存窗口几何体:

QSettings settings;
QByteArray geom = widget->saveGeometry();
settings.setValue("widget_geometry", geom);

还在启动时恢复:

QSettings settings;
QByteArray geom = settings.value(buf).toByteArray();
widget->restoreGeometry(geom);

我面临的问题是窗口没有放在与保存位置相同的位置。尺寸很好。根据我使用的窗口管理器,结果会有所不同。

  • 在i3中,窗口在两个轴上都是一个像素,大概是为了弥补窗口边框。

  • 在Unity(嘀咕?)中,无论我把窗口放在哪里,每次恢复时它都会被轻微超过10个像素。它似乎也有一个y限制,但我可以忍受它,因为它是一致的。

  • 在fluxbox中,窗口将恢复为其保存的大小和位置。

我已经完成了一些挖掘和解构保存到设置文件中的字节数组。我已经尝试手动调整窗口的位置而不是使用restoreGeometry(),但是应用程序确实无法知道它处理的WM不一致的类型。在某些WM中,使用框架几何图形而不是普通几何图形设置位置可以起作用,但是会拧紧其他几何图形。我从Qt几何文档中读到,你不能真正依赖X11窗口管理器的任何一致性,所以我没有想法。我只是希望那里有一个聪明的人解决了这个问题!

0 个答案:

没有答案