QSplitter

目录

1、新建分割窗口

2、在分割窗口中增加部件

3、查找部件再分割窗口中的位置

4、分割窗口中小部件的数目

5、分割窗口的大小

6、设置小部件在分割窗口中的比例

7、设置分割窗口的标题

8、测试代码


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();
}

结果:

发布了44 篇原创文章 · 获赞 54 · 访问量 7049

猜你喜欢

转载自blog.csdn.net/Liu_Xiao_Ming/article/details/103604865