[問題] Qt Layout 控件比例 視窗大小 問題

作者: BIAO (超越自己)   2017-06-27 22:53:08
開發平台(Platform): (Ex: Win10, Linux, ...)
Windows
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
MinGW
問題(Question):
各位板友大家好,
目前我正用Qt做視窗程式,
其中希望一個ToolBar按鍵能夠將原本的横式改為直式,
横式的部份是建立三個QVBoxLayout,再用QGridLayout採用(0,0),(0,1),(0,2)方式
水平排列,QGridLayout屬於CentralWidget,CentralWidget為mainwindow的子視窗,
QVBoxLayout內的控件(含Vertical Spacer)皆有設Stretch的比重,
各控件也有設置最小size,窗口放大或縮小時,控件的寬高皆符合心中所想延伸,
控件及Layout的size policy皆為preferred.
一鍵切換直式的做法是將原先QGridLayout內的Item移除,
再重新AddLayout,把三個QVBoxLayout的內容放入,
QGridLayout是採用(0,0,1,2),(1,0),(1,1)依序排列Layout1~Layout3..
目前遇到的狀況是,一鍵按下去後,
視窗的大小不會改變,Layout1在上面,Layout2及3水平排列在下方,
但是當窗口向右拉長時,控件也會横向發展變寬,但控件內的圖片會因此扭曲,
不曉得控件或Layout設定中,有沒有能夠令控件寬高比例均衡成長的呢?
我希望能夠限制住控件的寬高比例,在控件高度無法增加時,也不讓視窗能夠拉長,
也許最大化視窗按鍵也需要Disable,懇請板上先進不吝賜教,指引方向尋找資料,
謝謝^^
作者: uranusjr (←這人是超級笨蛋)   2017-06-28 00:57:00
有個方法是 subclass QGridLayout 然後 overridehasHeightForWidth() 回傳 true, 然後 heightForWidth()回傳某個 width 你希望有的 height參考文件 http://d.pr/YdJSrU
作者: BIAO (超越自己)   2017-06-28 10:16:00
看官方文檔好像可行,謝謝分享,另外我有查到也分享一下.https://qtguide.ustclug.org/ch06-05.htmhttps://goo.gl/McqmYU
作者: xvid (DivX)   2017-06-29 12:46:00
推分享:)

Links booklink

Contact Us: admin [ a t ] ucptt.com