欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Qt布局管理QSplitter:设计一个分割窗口功能,整个窗口由三个子窗口组成,各个子窗口之间的大小可随意拖拽改变(注释详细)

程序员文章站 2022-03-10 21:45:02
...

新建项目,基类选择“QMainWindow”。

main.cpp中的代码:

#include "mainwindow.h"
#include <QApplication>
#include <QSplitter>
#include <QTextEdit>
#include <QTextCodec>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QFont font("ZYSong18030",12);
    a.setFont(font);
    //主分割窗口
    QSplitter *splitterMain=new QSplitter(Qt::Horizontal,0);
    //新建一个QSplitter类对象,作为主分割窗口,设定此分割窗口为水平分割窗口
    QTextEdit *textLeft=new QTextEdit(QObject::tr("Main Widget"),splitterMain);
    //新建一个QTextEdit类对象,并将其插入主分割窗口中
    textLeft->setAlignment(Qt::AlignCenter);
    //设置TextEdit中文字的对齐方式(文字居中)

    //右分割窗口
    QSplitter *splitterRight=new QSplitter(Qt::Vertical,splitterMain);
    //新建一个QSplitter类对象,作为右分割窗口,设定此分割窗口为垂直分割窗口,并以主分割窗口为父窗口
    splitterRight->setOpaqueResize(false);
    //调用setOpaqueResize(bool)方法用于设定分割窗口的分割条在拖拽时是否为实时更新显示
    //若设为true则实时更新显示,若设为false则在拖拽时只显示一条灰色的粗线条,在拖拽到位并释放鼠标后
    //再显示分割条。默认设置为ture。
    QTextEdit *textUp=new QTextEdit(QObject::tr("Top Widget"),splitterRight);
    textUp->setAlignment(Qt::AlignCenter);
    QTextEdit *textBottom=new QTextEdit(QObject::tr("Bottom Widget"),splitterRight);
    textBottom->setAlignment(Qt::AlignCenter);
    splitterMain->setStretchFactor(1,1);
    //setStretchFactor()用于设定可伸缩控件,第一个参数用于指定设置的控件序号,控件序号按插入的先后
    //次序从0起依次编号;第二个参数为大于0的值,表示此控件为可伸缩控件。
    //此实例设定右部分分割窗口为可伸缩控件,当整个对话框的宽度发生改变时,左部的文件编辑框宽度保持不断
    //右部的分割窗口宽度随整个对话框大小的改变进行调整
    splitterMain->setWindowTitle(QObject::tr("Splitter"));
    splitterMain->show();
    //MainWindow w;
    //w.show();
    return a.exec();
}

其他文件中的代码不做改变。

运行结果如下:

Qt布局管理QSplitter:设计一个分割窗口功能,整个窗口由三个子窗口组成,各个子窗口之间的大小可随意拖拽改变(注释详细)

拖拽后:

 

Qt布局管理QSplitter:设计一个分割窗口功能,整个窗口由三个子窗口组成,各个子窗口之间的大小可随意拖拽改变(注释详细)

 

相关标签: Qt