下面的代碼沒測試過
轉自: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,本文的靈感也來源於此。在此感謝大佬 一去、二三里