布局类:QSplitter

分割窗口类: QSplitter

构造函数:

构造具有给定方向父级的拆分器。 

默认为水平切割

Qt::Horizontal水平分割
Qt::Vertical垂直分割

常用的函数:

addWidget()添加控件
insertWidget()插入控件
setOpaqueResize(bool)默认为true设定分割窗口的分割条在拖拽时是否实时更新显示
setStrechFactor(int,int)

设定可伸缩控件

第一个参数用来设定控件序号 0开始

第二个参数 >0 表示该控件为可伸缩控件

count()显示控件个数
widget()可以访问控件
setOrientation(Qt::Vertical)可以设置切割方向

水平切割和垂直切割的区别:

水平切割:

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QSplitter *sp1=new QSplitter(0);//默认为水平切割
    sp1->resize(400,400);
    QTextEdit *text1=new QTextEdit("上窗口");
    sp1->addWidget(text1);
    QTextEdit *text2=new QTextEdit("下窗口");
    sp1->addWidget(text2);
    sp1->show();
    return a.exec();
}

 垂直切割:

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QSplitter *sp1=new QSplitter(Qt::Vertical,0);//创建一个窗口
    sp1->resize(400,400);
    QTextEdit *text1=new QTextEdit("上窗口");
    sp1->addWidget(text1);
    QTextEdit *text2=new QTextEdit("下窗口");
    sp1->addWidget(text2);
    sp1->show();
    return a.exec();
}

 注意事项:当你一直addWIdget(),则会一直切割

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QSplitter *sp1=new QSplitter(0);//创建一个窗口
    sp1->resize(400,400);
    QTextEdit *text1=new QTextEdit("左窗口");
    QTextEdit *text2=new QTextEdit("右窗口");
    sp1->addWidget(text1);
    sp1->addWidget(text2);
    QPushButton *pt1=new QPushButton("按键一");
    QPushButton *pt2=new QPushButton("按键二");
    sp1->addWidget(pt1);
    sp1->addWidget(pt2);
    sp1->show();
    return a.exec();
}

使用伸缩因子:

第一个参数为索引(从0开始),第二个参数为使其具有的拉伸系数

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QSplitter *sp1=new QSplitter(0);//创建一个窗口
    sp1->resize(400,400);
    QTextEdit *text1=new QTextEdit("左窗口");
    QTextEdit *text2=new QTextEdit("右窗口");
    sp1->addWidget(text1);
    sp1->setStretchFactor(0,1);//索引和
    sp1->setStretchFactor(1,1);
    sp1->addWidget(text2);
    sp1->show();
    return a.exec();
}

当中间的滑块滑到最左边时,第一次会滑倒拉伸系数指定的位置

 该位置再移动滑块,才会到最左边

水平和垂直的综合使用:

创建项目 继承于 mainWindow 

在main.cpp中编写

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    //主分割窗口
    QSplitter *sp1=new QSplitter(Qt::Horizontal,0);//水平分割
    sp1->resize(400,400);//设置窗口大小
    QTextEdit *td1=new QTextEdit("左窗口",sp1);
    //右分割窗口
    QSplitter *sp2=new QSplitter(Qt::Vertical,sp1);//垂直分割
    sp2->setOpaqueResize(false);
    QTextEdit *td2=new QTextEdit("右上窗口",sp2);
    td2->setAlignment(Qt::AlignCenter);
    QTextEdit *td3=new QTextEdit("右下窗口",sp2);
    td3->setAlignment(Qt::AlignCenter);

    sp1->setStretchFactor(0,1);//把左窗口设为可伸缩窗口
    sp1->setWindowTitle("布局管理");

    sp1->show();
    //MainWindow w;
    //w.show();
    return a.exec();
}

在ui界面中使用切割器: 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值