【问题标题】:Qt frameGeometry is returning incorrect valuesQt frameGeometry 返回不正确的值
【发布时间】:2013-08-09 11:09:21
【问题描述】:

我正在使用 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 是无策略的(其他人称之为灵活)。因此,您不能对您的窗户将获得的装饰框架做出任何安全的假设。基本规则:总会有一个用户使用的窗口管理器打破了你的假设,并且会向你抱怨。

我想我没有得到正确的框架信息,因为窗口还没有被装饰。这个问题有解决办法吗?

【问题讨论】:

    标签: qt x11 pyside xorg


    【解决方案1】:

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

     pWidget->show();
     pWidget->hide();
    
     pWidget->whatever geometry method
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-09
      • 2021-10-26
      • 2015-10-13
      • 2014-12-06
      • 2021-02-01
      • 2017-08-21
      • 2021-10-27
      • 2021-02-10
      相关资源
      最近更新 更多