如何在应用布局规则后预览窗口中小部件的大小,之前我实际上是show()
小部件窗口?看起来在初始show()
命令之前,所有尺寸都是100x30。我该如何解决这个问题?如何在show()之前预览窗口小部件的大小?
回答
invalidate()
为我工作。
请注意,如果你这样做了以下它的工作如下要求(至少它似乎是在我的代码罚款):
widget->show();
widget->layout()->invalidate();
widget->hide();
这并不显示在屏幕上的小部件,因为你不直到hide()
发生,才放弃对队列的控制。在这之间,invalidate()
计算正确的位置。
你可以尝试使用Google的“展前QT几何”,这显示了qtcentre.org论坛题为Force geometry update of hidden widget一个线程在那里你可以阅读Wysota答案:
你可以叫上 无效()布局。它应该重新计算自己 然后。如果不是,那么有这个秘密 属性,说服部件它 正在显示,然后你应该是 能够强制其布局 重新计算。但首先尝试其他的东西 ,这不是很可靠的东西 。
这
的Qt :: WA_WState_ExplicitShowHide设置为 真实和Qt :: WA_WState_Hidden设置为 假。确保在 实际在屏幕上显示小部件之前,还原值 (特别是第二个)。
使用QWidget :: sizeHint根据所有子窗口小部件和布局的大小提示获取所需的顶级窗口小部件大小。或者调用QWidget :: adjustSize来实际运行布局并调整整个小部件树的大小。请注意,adjustSize将顶级窗口限制为屏幕的2/3,因此您可能无法获得大窗口所需的内容。
对于我来说,下面的工作:
window->layout()->update()
window->layout()->activate()
这可能真的一样Alexis的答案,但它并不需要显示,当时躲在窗口。
我想他人所发布的各种解决方案(show
& hide
,update
& activate
,invalidate
和WA_WState_ExplicitShowHide
& WA_WState_Hidden
),但没有一个与所有的部件,我不得不中心前在我的应用程序中调用show()
正确。我花了数小时挖掘,我的问题是不正确的尺寸被缓存在QWidgetItemV2。几分钟后,我想出了这个:
for(auto*child:widget->findChildren<QWidget*>()){child->updateGeometry();}
widget->updateGeometry();
- 1. 如何在窗口中调整窗口小部件的大小
- 2. 如何在隐藏窗口小部件后调整窗口大小,同时仍允许调整窗口大小?
- 3. 改变窗口小部件的大小而不改变主窗口大小QT
- 4. 调整无窗口小部件的窗口大小
- 5. PyQt - 调整父级窗口小部件的子窗口大小
- 6. 如何设置浏览器内部窗口/视口大小?
- 7. QGridLayout中窗口小部件之间的间距如何在窗口大小上保持不变?
- 8. 如何根据窗口大小更新PyQt4小部件位置?
- 9. 如何通过窗口大小来扩展小部件?
- 10. 如何使QMdiArea子窗口小部件不可调整大小?
- 11. 如何删除小部件并调整主窗口大小?
- 12. 窗口小部件
- 13. 如何在WPF(弹出窗口)窗口可见之前调整其大小?
- 14. 如何根据屏幕大小调整窗口小部件大小?
- 15. 如何清除父窗口小部件中的所有窗口小部件?
- 16. 在添加控件之前获取窗口大小
- 17. CKEditor,如何删除窗口小部件之前和之间的空白段落
- 18. 放入CDetailView窗口小部件另一个窗口小部件
- 19. 如何减小窗口的按钮部分的大小extjs4
- 20. 父窗口小部件如何定位其子窗口小部件?
- 21. 父窗口小部件中的中心固定大小的GtkDrawingArea小部件
- 22. Gtk3:设置一个固定的窗口大小(小于子窗口小部件请求的大小)
- 23. PhpStorm markdown预览窗口 - 字体太小
- 24. 打开预定义大小的窗口
- 25. 基于窗口大小的预定义
- 26. QT在窗口中最大化窗口小部件
- 27. 如何调整窗口小部件的大小,例如框架,标签,窗口内部的文本以及tcl中的窗口大小tk GUI
- 28. 调整浏览器窗口的大小
- 29. 调整大小的浏览器窗口
- 30. 调整浏览器窗口的大小
你需要什么这个? – 2011-02-10 22:05:09
我自己的小部件窗口类,检查对象的大小和添加动态小部件在施工时间。我需要在该阶段的布局之后测量事物的大小。 – JasonGenX 2011-02-10 22:47:34