目录
1、新建分割窗口
QSplitter *splitterMain = new QSplitter(Qt::Horizontal, 0);
分割窗口就是将第二个参数指的窗口,变为分割窗口。
上述代码是水平分割,分割后窗口内添加的小部件呈水平排列。将第一个参数改为Qt::Vertical则为垂直分割,割后窗口内添加的小部件呈垂直排列。第二个参数为父窗体,默认为null。
2、在分割窗口中增加部件
//按顺序在分割窗口中添加部件
QTextEdit *textLeft = new QTextEdit(QObject::tr("左部件"),splitterMain);
//创建一个部件,再添加到分割窗口中,顺序添加
QTextEdit *text1 = new QTextEdit(QObject::tr("添加部件"));
splitterMain->addWidget(text1);
//添加部件到指定位置,分割窗口中,部件的位置索引为0,1,2...
QTextEdit *text2 = new QTextEdit(QObject::tr("插入部件"));
splitterMain->insertWidget(1,text2);//在部件索引的前面插入小部件
3、查找部件再分割窗口中的位置
splitterMain->indexOf(textLeft);//返回小部件在分割窗口中的索引
4、分割窗口中小部件的数目
splitterMain->count();//返回分割窗口中小部件的数目
5、分割窗口的大小
splitterMain->width();
6、设置小部件在分割窗口中的比例
splitterMain->setStretchFactor(0,1);
splitterMain->setStretchFactor(1,2);
splitterMain->setStretchFactor(2,1);
第一个参数是小部件的索引,第二个参数是比例。三个小部件的大小比例为1:2:1。
7、设置分割窗口的标题
splitterMain->setWindowTitle(QObject::tr("分割窗口"));
8、测试代码
#include "mainwindow.h"
#include <QApplication>
#include <QSplitter>
#include <QTextCodec>
#include <QTextEdit>
#include <qdebug.h>
#include <QObject>
#include <QList>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//MainWindow w;
//w.show();
QFont font("ZYSong18030" , 12);
a.setFont(font);
//该分割窗口,指的是将窗口按照什么模式分割,它还是整个窗口的指针
QSplitter *splitterMain = new QSplitter(Qt::Horizontal, 0); //新建主分割窗口,水平分割
QTextEdit *textLeft = new QTextEdit(QObject::tr("左部件"),splitterMain);
textLeft->setAlignment(Qt::AlignCenter);
//测试
qDebug() << splitterMain->count();//返回分割窗口中小部件的数目
QTextEdit *text1 = new QTextEdit(QObject::tr("添加部件"));
splitterMain->addWidget(text1); //添加在分割模式下的下一个位置上
qDebug() << splitterMain->indexOf(textLeft);//返回小部件在分割窗口中的索引
QTextEdit *text2 = new QTextEdit(QObject::tr("插入部件"));
splitterMain->insertWidget(1,text2);//在部件索引的前面插入小部件
//QTextEdit *text3 = new QTextEdit(QObject::tr("代替添加部件"));
//qDebug() << splitterMain->replaceWidget(0,text3); //不会用
qDebug() << splitterMain->width();//返回分割窗口的宽度
/*========================================================*/
QSplitter *splitterRight = new QSplitter(Qt::Vertical, splitterMain); //右分割窗口,并以主分割窗口作为父窗口
splitterRight->setOpaqueResize(false);
QTextEdit *textUp = new QTextEdit(QObject::tr("上部件"),splitterRight);
textUp->setAlignment(Qt::AlignCenter);
QTextEdit *textMiddle = new QTextEdit(QObject::tr("中间部件"),splitterRight);
textMiddle->setAlignment(Qt::AlignCenter);
QTextEdit *textBottom = new QTextEdit(QObject::tr("底部部件"),splitterRight);
textBottom->setAlignment(Qt::AlignCenter);
//测试
qDebug() << splitterRight->count();//返回分割窗口中小部件的数目
// QList<int> list;
// list << 1 << 1 << 2 << 1;
// splitterMain->setSizes(list);//不怎么好用,设置小部件的比例
splitterMain->setStretchFactor(0,1);
splitterMain->setStretchFactor(1,1);
splitterMain->setStretchFactor(2,1);
splitterMain->setStretchFactor(3,2); //设置小部件的比例
/*========================================================*/
splitterMain->setStretchFactor(1,1);
splitterMain->setWindowTitle(QObject::tr("分割窗口"));
splitterMain->show();
return a.exec();
}
结果: