Qt frameGeometry返回不正确的值

时间:2013-08-09 11:09:22

标签: qt x11 pyside xorg

我正在使用Qt(Python中的Pyside来获取绑定),并且我正在尝试获取窗口小部件的帧几何。当我尝试在启动时获取窗口小部件的框架几何体并在窗口小部件上绘制元素时,它返回:

PySide.QtCore.QSize(639, 479)

但是,这是错误的框架几何体。如果我在窗口小部件上重绘一些元素,我会得到这个:

PySide.QtCore.QSize(1044, 571)

第二个输出是正确的帧几何,而不是第一个。根据这篇文章:http://doc.qt.io/qt-4.8/application-windows.html,它声明:

  

在X11上,窗口没有框架,直到窗口管理器装饰它。这在调用QWidget :: show()和窗口接收的第一个绘制事件之后的某个时间点异步发生,或者根本不发生。请记住,X11是免政策的(其他人称之为灵活)。因此,您无法对窗户将获得的装饰框架做出任何安全的假设。基本规则:总有一个用户使用窗口管理器来破坏你的假设,谁会向你抱怨。

我认为我没有获得正确的帧信息,因为窗口尚未装饰。这个问题有解决方法吗?

1 个答案:

答案 0 :(得分:1)

只有我知道的解决方法,它似乎对我有用几次然后我面临同样的问题:

 pWidget->show();
 pWidget->hide();

 pWidget->whatever geometry method