这就是整个布局
void MainWindow::createMySplitter()
{
leftSplitter = new QSplitter(Qt::Vertical); //垂直布局
leftSplitter->addWidget(ui->treeWidget);
rightSplitter = new QSplitter(Qt::Vertical);
rightSplitter->addWidget(ui->textEdit_1);
rightSplitter->addWidget(ui->textEdit_2);
rightSplitter->setStretchFactor(1, 1); //让编号为1(ui->textEdit_1)可以拉伸,填满空余部分
rightSplitter->setStretchFactor(2, 1);
rightSplitter->setHandleWidth(1);
upSplitter = new QSplitter(Qt::Horizontal, ui->frame);
upSplitter->addWidget(leftSplitter);
upSplitter->addWidget(rightSplitter);
upSplitter->setStretchFactor(2, 1); //使用两个setStretchFactor保证了把多余的额外空间都留给textEdit
upSplitter->setHandleWidth(1);
downSplitter = new QSplitter(Qt::Horizontal, ui->frame_2);
downSplitter->addWidget(ui->label);
mainSplitter = new QSplitter(Qt::Vertical);
mainSplitter->addWidget(upSplitter);
mainSplitter->addWidget(downSplitter);
mainSplitter->setStretchFactor(2, 1);
//禁止分割线的拖动
// for(int i = 0; i<mainSplitter->count();i++)
// {
// QSplitterHandle *handl = mainSplitter->handle(i);
// handl->setEnabled(false);
// }
//禁止分割线的拖动
QSplitterHandle *splitterHandle = mainSplitter->handle(1);
if(splitterHandle)
{
//Disable the Middle Line, it can't adjust.
splitterHandle->setDisabled(true);
}
mainSplitter->setHandleWidth(1); //设置了分割线的宽度
mainSplitter->setStyleSheet("QSplitter::handle { background-color: blue }"); //设置分界线的样式
setCentralWidget(mainSplitter);
}
效果: