[问题] 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