繁体   English   中英

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

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

我的QTabWidget在启动时有 2 个选项卡。

  • 选项卡 1 是启动时打开的选项卡。
  • 选项卡 2 包含一些小部件,我使用QSize稍后在新打开的选项卡中绘制类似的元素。

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

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

出于性能原因,QWidget 的size()方法不能保证在 QWidget 实际布局和显示之前返回其预期值。

如果您需要提前知道 QWidget 的大小,您可以调用它的sizeHint()方法,这将强制立即执行计算,以便即使没有返回正确的大小已经计算过了。

根据文档,当小部件不可见时,resizeEvent 永远不会被调用,并且也是paintEvent。 这是减少处理工作和减少渲染过程的正常例程。 如果您想知道何时调整 tab1 的大小,必须调整 reimplement(override) resizeEvent 并对 tab2 说。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM