Qt 布局管理之分割窗口

使用QSplitter进行窗口分割,使用 Horizontal 创建水平的分割窗口textleft 创建一个子分割窗口splitterRight 放在进去默认就会到右侧,这里继续设置一下setOpaqueResize函数设置右侧的拖拽不刷新只显示一个粗线条,
在这个右侧的子分割窗口中添加两个textEidt分别处于上下两个窗口 然后在主窗口中设置了右侧的两个子窗口为可伸缩控件。



#include<QFont>
#include<QSplitter>
#include <QApplication>
#include<QTextEdit>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QFont font("ZYSong18030",12);
    a.setFont(font);
    //主窗口分割
    QSplitter *splitterMain = new QSplitter(Qt::Horizontal,0);
    //左部分割窗口
    QTextEdit *textLeft = new QTextEdit(QObject::tr("Left Widget"),splitterMain);
    textLeft->setAlignment(Qt::AlignCenter);
    //右部分割窗口

    QSplitter *splitterRight = new QSplitter(Qt::Vertical,splitterMain);
    splitterRight->setOpaqueResize(false);
    //setOpaqueResize 设定分割窗口的分割条在拖曳时是否为实时更新显示,
    //若设为true则实时更新显示,若设为false则在拖曳时只显示一条灰色的粗线条,
    //在拖曳到位并释放鼠标后再显示分割条。默认设置为true
    //splitterRight 中的up
    QTextEdit*textUp = new QTextEdit(QObject::tr("Top widget"),splitterRight);
    textUp->setAlignment(Qt::AlignCenter);
    //splitterRight 中的bottom
    QTextEdit *textBottom = new QTextEdit(QObject::tr("Bottom Widget"),splitterRight);
    textBottom->setAlignment(Qt::AlignCenter);

    splitterMain->setStretchFactor(1,1);
    //调用setStretchFactor()方法用于设定可伸缩控件,
    //它的第1个参数用于指定设置的控件序号,控件序号按插入的先后次序从0起依次编号;
    //第2个参数为大于0的值,表示此控件为可伸缩控件。此实例中设定右部分分割窗口为可伸缩控件,
    //当整个对话框的宽度发生改变时,左部的文件编辑框宽度保持不变,右部的分割窗口宽度随整个对话框大小的改变进行调整。
    splitterMain->setWindowTitle(QObject::tr("Splitter"));
    splitterMain->show();

    return a.exec();
}

有图有真相

posted @ 2022-03-29 11:02  simp00  阅读(1226)  评论(0编辑  收藏  举报