QSplitter是一种分割窗口,分为左右分割和上下分割,QSplitter可以作为其他窗口的父窗口
#include "mainwindow.h"
#include <QApplication>
#include<QSplitter>
#include<QTextEdit>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QSplitter *mainsplitter=new QSplitter(Qt::Horizontal);
QTextEdit *Edit1=new QTextEdit(mainsplitter);
Edit1->setText("Right");
Edit1->setAlignment(Qt::AlignCenter);
QSplitter *Rightsplitter=new QSplitter(Qt::Vertical,mainsplitter);
Rightsplitter->setOpaqueResize(false);
QTextEdit *Edit2=new QTextEdit(Rightsplitter);
Edit2->setText(QObject::tr("top"));
QTextEdit *Edit3=new QTextEdit(Rightsplitter);
Edit3->setText(QObject::tr("bottom"));
mainsplitter->setStretchFactor(1,1);
mainsplitter->show();
//MainWindow w;
//w.show();
return a.exec();
}
mainsplitter->setStretchFactor(1,1);
这个函数的原型是
void QSplitter::setStretchFactor(int index, int stretch)
设置splitter内的小部件的拉伸状态
这个函数相当于
QWidget *widget = splitter->widget(index);
QSizePolicy policy = widget->sizePolicy();
policy.setHorizontalStretch(stretch);
policy.setVerticalStretch(stretch);
widget->setSizePolicy(policy);
splitterRight->setOpaqueResize(false) :调用setOpaqueResize(bool)方法用于设定分割窗口的分割条在拖拽时是否为实时更新显示,若为true则实时更新显示,若设为false则在拖拽时只显示一条灰色的粗线条,在拖拽到位并释放鼠标后再显示分割条。
splitter一般在主函数中进行布局