Qt布局管理: 分割窗口QSplitter类讲解(纯代码实现分割窗口)

本文介绍 Qt 中 QSplitter 控件的使用方法及属性调整技巧,通过实例演示如何创建可自由调整大小的分割窗口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个QSplitter是一个可以包含其他控件的控件,这些控件被一个分隔条隔开,托拽这个分隔条,可以改变splitter的子控件的大小。

QSplitter控件经常做为布局管理器使用,给用户提供更多的界面控制。


实例:

实现功能:使用QSplitter实现分割窗口功能,整个对话框由四个窗口组成,各个窗口之间的大小可以任意拖拽来改变。


步骤:

1.  使用Qt Creater新建Gui应用程序,名称为QSplitter,基类为“QMainWindow”,取消“创建界面”按钮。

2.  在main.cpp中输入下列代码。

  1. #include "mainwindow.h"  
  2. #include <QApplication>  
  3. #include <QSplitter>  
  4. #include <QTextCodec>  
  5. #include <QTextEdit>  
  6. #include <QObject>  
  7.   
  8. int main(int argc, char *argv[])  
  9. {  
  10.     QApplication a(argc, argv);  
  11.     //MainWindow w;  
  12.     //w.show();  
  13.   
  14.     QFont font("ZYSong18030" , 12);  
  15.     a.setFont(font);  
  16.   
  17.     QSplitter *splitterMain = new QSplitter(Qt::Horizontal, 0); //新建主分割窗口,水平分割  
  18.   
  19.     QTextEdit *textLeft = new QTextEdit(QObject::tr("左部件"),splitterMain);  
  20.     textLeft->setAlignment(Qt::AlignCenter);  
  21.   
  22.     QSplitter *splitterRight = new QSplitter(Qt::Vertical, splitterMain);   //右分割窗口,并以主分割窗口作为父窗口  
  23.     splitterRight->setOpaqueResize(false);  
  24.   
  25.     QTextEdit *textUp = new QTextEdit(QObject::tr("上部件"),splitterRight);  
  26.     textUp->setAlignment(Qt::AlignCenter);  
  27.   
  28.     QTextEdit *textMiddle = new QTextEdit(QObject::tr("中间部件"),splitterRight);  
  29.     textMiddle->setAlignment(Qt::AlignCenter);  
  30.   
  31.     QTextEdit *textBottom = new QTextEdit(QObject::tr("底部部件"),splitterRight);  
  32.     textBottom->setAlignment(Qt::AlignCenter);  
  33.   
  34.     splitterMain->setStretchFactor(1,1);  
  35.     splitterMain->setWindowTitle(QObject::tr("分割窗口"));  
  36.     splitterMain->show();  
  37.   
  38.     return a.exec();  
  39. }  


3.  点击运行按钮,效果图如下:



程序中的部分函数讲解:

1.  QFont font("ZYSong18030" , 12);     a.setFont(font);  这两句代码用于指定显示的字体。

我也可以根据需要,这样来写: QFont font("楷体" , 18,QFont::Bold);   a.setFont(font);   此时便是楷体字体,字号为18,粗体显示。

效果如下:



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

QTextEdit *textLeft = new QTextEdit(QObject::tr("左部件"),splitterMain);    新建一个QTextEdit类对象,并将其插入主分割窗口。

textLeft->setAlignment(Qt::AlignCenter);    设置TextEdit对象中文本的对齐方式。

水平对齐方式有:
Constant                   Value            Description
Qt::AlignLeft            0x0001           Aligns with the left edge.
Qt::AlignRight          0x0002          Aligns with the right edge.
Qt::AlignHCenter     0x0004          Centers horizontally in the available space.
Qt::AlignJustify        0x0008          Justifies the text in the available space.

垂直对齐方式有:
Constant                   Value       Description
Qt::AlignTop             0x0020     Aligns with the top.
Qt::AlignBottom        0x0040     Aligns with the bottom.
Qt::AlignVCenter      0x0080     Centers vertically in the available space.
Qt::AlignBaseline     0x0100     Aligns with the baseline.

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


3.  splitterRight->setOpaqueResize(true);  设定在拖拽分割条时,是否实时更新。若为true,则实时更新;否则在拖拽时显示一条虚线。


splitterRight->setOpaqueResize(true);效果如下:(注意观察分割条的颜色)



splitterRight->setOpaqueResize(false);效果如下:(注意观察分割条的颜色)



4.  splitterMain->setStretchFactor(1,1);  此函数用于设定:控件是否可伸缩。第一个参数用于指定控件的序号。第二个函数大于0时,表示控件可伸缩,小于0时,表示控件不可伸缩。

splitterMain->setStretchFactor(1,1); 效果如下:(注意观察中间的垂直分割条)



splitterMain->setStretchFactor(1,0); 效果如下:(注意观察中间的垂直分割条)



FROM:  http://blog.youkuaiyun.com/rl529014/article/details/51489756





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值