【发布时间】:2013-02-18 19:17:24
【问题描述】:
我想查询一个小部件的宽度来进行一些自定义布局管理。不幸的是,无论小部件实际有多大或多小,以下代码都会返回 640
int myWidth = this->rect().size().width(); // "this" is my class derived from QWidget
// myWidth is set to 640
编辑:
int myWidth = this->width() 返回相同的 640
【问题讨论】:
-
为什么不只是
int myWidth = this->width(); -
您是在小部件显示之前还是之后调用此函数?
-
您是否尝试在您的小部件上调用
sizeHint或adjustSize? -
感谢@Chris,渲染后调用函数给了我正确的宽度。我目前在构造函数中使用单次计时器实现了这一点。但是有没有办法知道小部件何时被渲染?
-
您不需要重新实现
sizeHint或adjustSize。如果你调用sizeHint,它可以计算出它的渲染大小的一些计算,当你要求它的rect()->size()->width()时。调用adjustSize是另一种告诉小部件更新其几何形状的方法,以获取在其中调整大小的元素或已添加的元素。