如何在未选择的选项卡中的 QTabWidget 中绘制 Qt 小部件?

How to draw Qt widgets in a QTabWidget in non-selected tabs?

我的 QTabWidget 在启动时有 2 个标签。

问题是,如果选项卡 2 尚未显示,当前元素的大小为 640x480(显然是默认值)。选择选项卡 2 后,将“绘制”元素并根据分辨率、window 大小等获取它们的大小。
如何在不打开选项卡 2 的情况下强制在后台绘制元素,以便我可以获得打开选项卡时元素的大小? repaintupdate 不这样做。

我目前的解决方法是在 myWindow.show()myApp.exec() 之间的 main.cpp 中打开选项卡 2 并切换到选项卡 1,但这似乎有点脏。

根据 Document 当小部件不可见时从未调用过 resizeEvent 以及 paintEvent。这是减少处理工作量和减少渲染过程的正常例程。如果您想知道 tab1 何时调整大小,请重新实现(覆盖)resizeEvent 并告诉 tab2 必须调整大小。

出于性能原因,QWidget 的 size() 方法不能保证 return 它的预期值,直到 QWidget 实际布局和显示之后。

如果您需要提前知道 QWidget 的大小 ,您可以调用它的 sizeHint() 方法,这将强制执行计算马上,这样就可以 return 编辑正确的大小,即使它还没有计算出来。