QSplitter的使用
QSplitter的用途
QSplitter使得用户可以通过拖动子窗口之间的边界来控制它们的大小,例如:
QSplitter的添加方法
QSplitter的添加方法有2种:a)通过Qt Creator的界面设计工具添加;b)直接使用C++代码添加。
通过Qt Creator添加QSplitter控件
与Push Button等控件的添加方法不同,在“设计”视图左侧的控件列表中,并没有对应的QSplitter控件,而是在上方面的工具栏中,如下图红色圈住的位置所示:
与上图中左侧的Push Button等控件的使用方法不同的是,QSplitter不可以直接使用拖放的方式将其添加到界面中。根据参考资料[2][3]的说明可知,使用QSplitter之前,需要先添加将被分裂的两个控件,然后同时选中它们,这时候上图的QSplitter按钮变成可用状态,点击“水平分裂器”即可将它们进行水平的布局。
取消QSplitter
取消上述的分裂布局的方法是,同时选中已经被分裂的控件,然后点击工具栏上方的“打破布局(B)”按钮即可,如下图所示:
动态改变子窗口大小
默认情况下,使用鼠标拖动分割子窗口间的边界时,子窗口会动态的改变其大小。然而,如果希望在松开鼠标时才改变其大小,可以设置下面的参数,取消其勾选状态即可:
子窗口最小尺寸
在拖动子窗口间的边界线时,有时我们并不希望子窗口的宽度或者高度被缩小到零,因此可以设置子窗口的最小尺寸:
然而,就算是设置了上述值,还不行,还需要将下面的选择去掉勾选状态
子窗口比例
选中QSplitter中的子窗口,然后设置其sizePolicy属性如下图所示
分别将QSplliter中各子窗口的“水平伸展”值设置为非零的值。此值越大,表示对应的子窗口在QSplliter中的分割比例越大(分割效果要运行程序时才呈现出来)。
/****************************************************************************************************/
使用C++ 代码添加QSplitter
水平分割
垂直分割
分割应用
QSplitter的构造方法:
QSplitter *splitterMain=new QSplitter(Qt::Horizontal,0);
第一个参数通过Qt::Horizontal 和 Qt::Vertical来设定为水平分割或垂直分割。第二个设定0代表是主窗口,无父窗口。
子splitter设置的
new QSplitter(Qt::Vertical,splitterMain);
代表主窗口是splitterMain。则子splitter就被添加到splitterMain中。
添加QTextEdit控件
QTextEdit *textLeft=new QTextEdit(QObject::tr(“Left Widget”),splitterMain);
第一个参数设置文本内容,第二个参数设置主窗体。
设置拖动时是否实时更新
splitterRight->setOpaqueResize(false);
false为不实时更新——在拖动时候只显示一条灰色的线条,在拖动到位并释放鼠标后再显示分割条。默认为true——实时更新。
设定可伸缩控件
splitterMain->setStretchFactor(1,1);
第一个参数代表控件序号,第一个序号为0.后面参数0代表不可伸缩,非0代表可伸缩。
这里设置右边的可伸缩。当拉伸整个窗口时候,左边保持原来宽度。拉伸后,发现左边的宽度不变。