QT5布局管理---3.1分割窗口QSplitter类

3.1分割窗口QSplitter类

一个简单的分割窗口功能,整个窗口有三个子窗口组成。各个子窗口的大小可随意拖拉改变

(图一)

本实例采用采用编写代码的形式实现,具体步骤如下。

(1)新建Qt Widgets Application,项目名称为“Splitter ”,基类选择“QMain Window”,取消“创建界面”复选框的选中状态。

(2)在上述工程的“main.cpp”文件中添加如下代码:

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    //指定显示字体
    QFont font ("ZYSong18030",12);
    a.setFont(font);
    
    //主分割窗口
    QSplitter *splitterMain = new QSplitter(Qt::Horizontal,0);                        //a
    QTextEdit *textLeft = new QTextEdit(QObject::tr("Left widgit"),splitterMain);     //b
    textLeft->setAlignment(Qt::AlignCenter);                                          //c

    //右分割窗口
    QSplitter *splitterRight = new QSplitter(Qt::Vertical,splitterMain);              //d
    splitterRight->setOpaqueResize(false);                                            //e
    QTextEdit *textUp = new QTextEdit(QObject::tr("Top Widget"),splitterRight);
    textUp->setAlignment(Qt::AlignCenter);
    QTextEdit * textBottom =new QTextEdit(QObject::tr("Bottom Widgit"),splitterRight);
    textBottom->setAlignment(Qt::AlignCenter);。
    splitterMain->setStretchFactor(1,1);                                              //f
    splitterMain->setWindowTitle(QObject::tr("Splitter"));
    splitterMain->show();

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

(3)在“main.cpp”文件的开始部分添加以下头文件:

//添加以下头文件
#include "QSplitter"
#include "QTextEdit"
#include "QTextCodec"

(4)运行程序,就可以显示如图一样式了

其中:

(a)QSplitter *splitterMain = new QSplitter(Qt::Horizontal,0) :新建一个QSplitter类对象,作为主分割窗口,设定此分割窗口为水平分割窗口。

(b)QTextEdit *textLeft = new QTextEdit(QObject::tr("Left widgit"),splitterMain) :新建一个QTextEdit类对象,并将其插入主分割窗口中。

(c)textLeft->setAlignment(Qt::AlignCenter) :设定TextEdit中文字的对齐方式,常用的对齐方式有以下几种。

        (1)Qt::AlignLeft:左对齐。

        (2)Qt::AlignRight:右对齐。

        (3)Qt::AlignCenter:文字居中(Qt::AlignHCenter 为水平居中,Qt::AlignVCenter 为垂直居中)

        (4)Qt::AlignRight:右对齐。

        (5)Qt::AlignRight:右对齐。

(d)QSplitter *splitterRight = new QSplitter(Qt::Vertical,splitterMain) :新建一个QSplitter类对象,作为右分割窗口,设定此分割窗口为垂直分割窗口,并以主分割窗口为父窗口。

(e)splitterRight->setOpaqueResize(false) :调用setOpaqueResize(bool)方法用于设定分割窗口的分割条在拖曳时是否为实时更新显示,若为true则实时更新显示,若为false则在拖曳时只显示一条灰色的粗线条,在拖曳到位并释放鼠标后再显示分割条。默认设置为true。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值