QSplitter setStretchFactor()無效的問題


下面的代碼沒測試過

轉自:https://blog.csdn.net/baidu_33850454/article/details/80845582

前言

使用QSplitter 來分割窗口,當兩側是有布局的頁面(未在其他情況下驗證)時,通過setStretchFactor(int index, int stretch) 來設置窗口比例無效。比如:

1     splitter_main->setStretchFactor(0,1);
2     splitter_main->setStretchFactor(0,4);

 

設置無效。

解決方案

通過設置子窗口的sizePolicy來實現。

 1     splitter_main = new QSplitter(Qt::Vertical,this);
 2     ui_progEditor = new UI_ProgEditor(splitter_main);
 3     //設置 ui_progEditor 的所占比例為 1
 4     QSizePolicy editorPolicy = ui_progEditor->sizePolicy();
 5     editorPolicy.setVerticalStretch(1);
 6     ui_progEditor->setSizePolicy(editorPolicy);
 7 
 8     ... ...
 9 
10     //設置顯示比例為 3
11     widget_child = new ChildWidget();
12     QSizePolicy tableSizePolicy = widget_child->sizePolicy();
13     tableSizePolicy.setVerticalStretch(3);
14     widget_child->setSizePolicy(tableSizePolicy);
15 
16     splitter_main->insertWidget(1,widget_child);

 

除了設置子窗口的拉伸因子,還可以設置頁面的大小策略。比如QSizePolicy::Fixed , QSizePolicy::Minimum 等

具體可以參考頁面:Qt 之 QSizePolicy,本文的靈感也來源於此。在此感謝大佬 一去、二三里


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM