我正在修复一些Qt / C ++代码中的错误。有一个小部件,当第一次显示时它的布局是错误的,但在被隐藏并再次显示之后,它的布局是正确的。我在代码中分散了一些跟踪,以便在不同时间打印窗口小部件元素的大小和位置,我可以看到它是第一次调用show()
导致布局自行修正。我想要做的是在显示小部件之前触发布局修正。我已经尝试过每一次我能想到的黑暗镜头。我拨打了updateGeometry()
,adjustSize()
,layout()->update()
,layout()->invalidate()
,layout()->activate()
。我在小部件上调用了这些,它是父小部件。什么都没有用。唯一有效的方法是调用show()
。
那么,有没有办法让Qt小部件更正它的布局而不用显示它?
编辑[0]:我无法轻松显示屏幕截图,因为它显示在未运行X的嵌入式系统上。但基本上;小部件由几个标签组成,它们以宽度和高度的一些默认值开始,这使得它们全部被粉碎到小部件的一侧。我可以手动将位置和大小设置为我想要的值,但我知道我不需要,因为Qt在第一次显示小部件后完美地校正了布局。
编辑[1]:此外,创建布局和标签的代码由Qt uic
从Qt Designer .ui
文件自动生成。