QSplitter设置宽高比例的正确方法
問題
實(shí)際開發(fā)中,需要經(jīng)常調(diào)整QSplitter中子窗口的寬度/高度比例。對(duì)水平QSplitter來說,是寬度比例;對(duì)垂直QSplitter來說,是高度比例。下面以水平QSplitter為例說明。
我們首先應(yīng)該會(huì)想起看看QSplitter是不是有設(shè)置比例的函數(shù)。查找文檔,發(fā)現(xiàn)有一個(gè)setStretchFactor函數(shù)。經(jīng)過嘗試以后,發(fā)現(xiàn)無論如何設(shè)置,都不能獲得想要的效果。
沒有想象的順利,那么就需要仔細(xì)閱讀官方文檔。下面是官方文檔對(duì)于此函數(shù)的描述:
翻譯過來意思是:
此函數(shù)用于更新尺寸策略中,對(duì)應(yīng)索引位置窗口的伸縮比例值。
參數(shù)stretch不是真正有效的伸縮比例;最終呈現(xiàn)的窗口大小是伸縮因子stretch乘上index對(duì)應(yīng)的子窗口的初始寬度(以水平為例)。
可見,最終的子窗口的寬度或高度,并不是僅僅調(diào)用一次setStretchFactor就可以控制最終顯示效果的。也就是說,最終顯示結(jié)果是由stretch factor和子窗口初始寬度以乘積的方式共同決定的。
方案
點(diǎn)擊QSplitter函數(shù)文檔下方的鏈接的相關(guān)函數(shù),可以發(fā)現(xiàn)setSizes函數(shù)是用來設(shè)置子窗口寬度值的。
于是使用以下代碼設(shè)置并測(cè)試:
注意上面的代碼,我們沒有調(diào)用setStretchFactor,所以stretchFactor默認(rèn)為1:1,所以最終比例由setSizes函數(shù)來決定。
提出一個(gè)小問題:為什么setSizes絕對(duì)值要盡量大?此處為答案1。
總結(jié)
以后遇到QSplitter設(shè)置比例,直接使用setSizes,且在保持你想要設(shè)置的比例的前提下,盡量給setSizes設(shè)置比較大的參數(shù)。
小問題答案:如果給setSizes的參數(shù)很小,且如果小于QSplitter,QSplitter內(nèi)的子窗口將被拉伸,想要保持你想要的比例根本不可能。所以,將setSizes參數(shù)設(shè)置為萬級(jí)別大小,是一個(gè)比較好的選擇。 ??
總結(jié)
以上是生活随笔為你收集整理的QSplitter设置宽高比例的正确方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中信信用卡团金宝分期利率是多少/划算吗
- 下一篇: 不要再被券商“吸血”了,有些券商开户万一