如何在應用佈局規則後預覽窗口中小部件的大小,之前我實際上是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