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

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

QSplitter 继承自QFrame,而QFrame又继承自QWidget,这点很重要。

对于使用QSplitter拆分窗口:

1)新建一个QSplitter,就意味着新建了一个QWidget

2)不同的QSplitter对象通过指定父子关系来完成嵌套(划分窗口)

3)QSplitter可以放置到你指定的任何窗口内

实例:

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

步骤:

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

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

#include "mainwindow.h"
#include <QApplication>
#include <QSplitter>
#include <QTextCodec>
#include <QTextEdit>
#include <QObject>int main(int argc, char *argv[])
{QApplication a(argc, argv);//MainWindow w;//w.show();QFont font("ZYSong18030" , 12);a.setFont(font);QSplitter *splitterMain = new QSplitter(Qt::Horizontal, 0); //新建主分割窗口,水平分割QTextEdit *textLeft = new QTextEdit(QObject::tr("左部件"),splitterMain);textLeft->setAlignment(Qt::AlignCenter);QSplitter *splitterRight = new QSplitter(Qt::Vertical, splitterMain);   //右分割窗口,并以主分割窗口作为父窗口splitterRight->setOpaqueResize(false);QTextEdit *textUp = new QTextEdit(QObject::tr("上部件"),splitterRight);textUp->setAlignment(Qt::AlignCenter);QTextEdit *textMiddle = new QTextEdit(QObject::tr("中间部件"),splitterRight);textMiddle->setAlignment(Qt::AlignCenter);QTextEdit *textBottom = new QTextEdit(QObject::tr("底部部件"),splitterRight);textBottom->setAlignment(Qt::AlignCenter);splitterMain->setStretchFactor(1,1);splitterMain->setWindowTitle(QObject::tr("分割窗口"));splitterMain->show();return a.exec();
}

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); 效果如下:(注意观察中间的垂直分割条)

qt利用QSplitter任意拆分窗口相关推荐

  1. 拆分窗口QSplitter

    拆分窗口中可以添加许多子控件,各个子控件通过拆分线相互分隔开来,拖动该拆分线可以随意改变子控件大小 1 import sys 2 from PyQt5.QtCore import Qt 3 from ...

  2. distiller的另一个实例正忙于启动_PYQT5学习(02):利用Qt Designer制作第一个窗口程序

    目标 利用Qt Designer设计窗口界面 使用PyUIC把Qt Designer生成的UI文件转换为py文件 使用转换生成的py文件 创建项目 启动启动pycharm并创建项目 这一环节在这里就不 ...

  3. 【Qt】2D绘图之窗口-视口转换

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 程序示例 04. 为什么要修改这个逻辑坐标矩形? 05. 窗口和视口 06. 附录 01. 概述 在使用QPainter进 ...

  4. Qt4_在Qt设计师中集成自定义窗口部件

    在Qt设计师中集成自定义窗口部件 在Qt设计师中使用自定义窗口部件之前,我们必须让Qt设计师先察觉到它们的存在.有两种方法可以完成这一任务:改进法(promotion)和插件法(pluigin). 改 ...

  5. Qt - 驾校科目-考试系统-窗口交互

    Qt - 驾校科目-考试系统-窗口交互 如果登录成功 编译执行 这样子就能避免一闪而过(方法一) 编译执行也没有问题 内存分配方法(二) #ifndef EXANDIALOG_H #define EX ...

  6. wxpython多个面板_wxpython:隐藏其中一个拆分窗口面板

    我有一个相框wx.拆分窗口有两个面板作为子面板.我想用一个按钮(显示/隐藏按钮)来隐藏其中一个面板,也就是说,第一个面板应该隐藏,第二个面板应该在窗框消失的情况下占据整个框架.再次单击该按钮将显示隐藏 ...

  7. 怎么取消任意Windows窗口总在最前

    windows7下取消任意Windows窗口总在最前 最简单的办法是右键下边的任务栏,选择取消锁定任务栏后,再锁定一下.

  8. Qt实现基本QMainWindow主窗口程序

    这个实验用Qt实现基本QMainWindow主窗口 先上实验效果图    打开一个文件,读取文件类容 详细步骤: 1.打开Qt creator新建MainWindow工程 右键工程名添加新文件,mai ...

  9. [网络安全自学篇] 九十五.利用XAMPP任意命令执行提升权限(CVE-2020-11107)及防御措施

    这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步.前文分享了木马病毒提权技术,包括进程访问令牌权限提升和Bypass UAC.这篇文章 ...

最新文章

  1. checkbox全选与反选
  2. python-ldap “expected a string in the list”
  3. 正点原子串口函数分析
  4. windows渗透大全
  5. 【解题报告】2020蓝桥杯B组模拟 计蒜客 结果填空:苹果
  6. 数据结构二叉树遍历求后序
  7. IntelliJ IDEA安装后需要必须做的一件事
  8. DRL前沿之:Benchmarking Deep Reinforcement Learning for Continuous Control
  9. LAMP(Linux+Apachd+Mysql+Php)搭建网站环境
  10. 【路由设置】Macbook 双网卡同时访问内外网
  11. Java 坐标系相互转换
  12. 【exp-linux】用aplay直接播放音频文件(mp3,wav)
  13. MacBookpro连不上WiFi,网络增加新的位置解决
  14. 关于CTF中脚本的编写及使用。ISCC之Retrieve the passcode
  15. IT行业为何如此吃香?2019学习IT就业前景分析
  16. 计算机开机的四个画面,电脑系统开机时的欢迎使用四个漂亮字如何修改
  17. windows10系统下mfc100u.dll加载失败的解决方法
  18. 上海域格LTE模块CLM920_JC3贴片SIM卡双卡切换
  19. [附源码]java毕业设计汽车票售票系统lunwen
  20. 【土地评价与土地管理】案例:某地区柑橘种植适宜性评价

热门文章

  1. php数组去交集,PHP获得数组交集与差集的方法
  2. Nat Biotechnol | 大神李恒团队开发不依赖于亲本的单倍型基因组组装工具hifiasm
  3. 还在担心没有服务器做不了数据分析?这个免费资源看一下!
  4. 胰腺癌代谢生物标志物最新研究成果:诊断效率明显优于传统标志物
  5. python 表格查询_python单表查询
  6. 第十届 蓝桥杯大赛 青少年创意编程 C++组
  7. 小学奥数 7834 分成互质组 python
  8. 第19课 比大小 《小学生C++趣味编程》
  9. thinkphp3.2.3版本的数据库增删改查实例
  10. ESP32 + ESP-IDF |GPIO 03 - 定时器轮询按钮的状态,控制LED亮或者灭