前言
使用QSplitter
来分割窗口,当两侧是有布局的页面(未在其他情况下验证)时,通过setStretchFactor(int index, int stretch)
来设置窗口比例无效。比如:
splitter_main->setStretchFactor(0,1);
splitter_main->setStretchFactor(0,4);
设置无效。
解决方案
通过设置子窗口的sizePolicy来实现。
splitter_main = new QSplitter(Qt::Vertical,this);
ui_progEditor = new UI_ProgEditor(splitter_main);
//设置 ui_progEditor 的所占比例为 1
QSizePolicy editorPolicy = ui_progEditor->sizePolicy();
editorPolicy.setVerticalStretch(1);
ui_progEditor->setSizePolicy(editorPolicy);
... ...
//设置显示比例为 3
widget_child = new ChildWidget();
QSizePolicy tableSizePolicy = widget_child->sizePolicy();
tableSizePolicy.setVerticalStretch(3);
widget_child->setSizePolicy(tableSizePolicy);
splitter_main->insertWidget(1,widget_child);
除了设置子窗口的拉伸因子,还可以设置页面的大小策略。比如QSizePolicy::Fixed
, QSizePolicy::Minimum
等
具体可以参考页面:Qt 之 QSizePolicy,本文的灵感也来源于此。在此感谢大佬 一去、二三里