最简单的分割窗体

  1. #include <QApplication>
  2. #include <QLabel>
  3. #include <QSplitter>
  4. int main(int argc, char *argv[])
  5. {
  6. QApplication app(argc, argv);
  7. QSplitter * mainSplitter = new QSplitter(Qt::Horizontal);
  8. mainSplitter->setHandleWidth(10);
  9. mainSplitter->setStyleSheet("QSplitter::handle { background-color: black }"); //设置分界线的样式
  10. QLabel *label = new QLabel(QObject::tr("TestA"));
  11. QLabel *label2 = new QLabel(QObject::tr("TestB"));
  12. mainSplitter->addWidget(label2);
  13. mainSplitter->addWidget(label);
  14. mainSplitter->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
  15. mainSplitter->show();
  16. return app.exec();
  17. }

结果截图如下

竖向排列子窗口

  1. #include <QApplication>
  2. #include <QLabel>
  3. #include <QSplitter>
  4. int main(int argc, char *argv[])
  5. {
  6. QApplication app(argc, argv);
  7. QSplitter * mainSplitter = new QSplitter(Qt::Horizontal);
  8. mainSplitter->setHandleWidth(10);
  9. mainSplitter->setStyleSheet("QSplitter::handle { background-color: black }"); //设置分界线的样式
  10. QLabel *label = new QLabel(QObject::tr("TestA"));
  11. QLabel *label2 = new QLabel(QObject::tr("TestB"));
  12. mainSplitter->addWidget(label2);
  13. mainSplitter->addWidget(label);
  14. mainSplitter->setOrientation(Qt::Vertical);
  15. mainSplitter->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
  16. mainSplitter->show();
  17. return app.exec();
  18. }

结果截图如下

http://blog.csdn.net/a649518776/article/details/6633857

  1. #include <QApplication>
  2. #include <QSplitter>
  3. #include <QTextCodec>
  4. #include <QTextEdit>
  5. int main(int argc, char *argv[])
  6. {
  7. QApplication a(argc, argv);
  8. //设置字体
  9. QFont font("ZYSong18030",12);
  10. a.setFont(font);
  11. //The QTextCodec class provides conversions between text encodings
  12. //Returns a pointer to the codec most suitable for this locale.On Windows, the codec will be based on a system locale.
  13. QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
  14. //主splitter,以下填充text和子splitter
  15. //QSplitter::QSplitter ( Qt::Orientation orientation, QWidget * parent = 0 )
  16. QSplitter *splitterMain=new QSplitter(Qt::Horizontal,0);
  17. QTextEdit *textLeft=new QTextEdit(QObject::tr("Left Widget"),splitterMain);
  18. textLeft->setAlignment(Qt::AlignCenter);
  19. QSplitter *splitterRight=new QSplitter(Qt::Vertical,splitterMain);
  20. splitterRight->setOpaqueResize(false);
  21. //开始填充右边的splitter,放上两个text
  22. QTextEdit *textTop=new QTextEdit(QObject::tr("Right Top Widget"),splitterRight);
  23. textTop->setAlignment(Qt::AlignCenter);
  24. QTextEdit *textBottom=new QTextEdit(QObject::tr("Right Bottom Widget"),splitterRight);
  25. textBottom->setAlignment(Qt::AlignCenter);
  26. //设置主splitter
  27. splitterMain->setStretchFactor(1,1);
  28. splitterMain->setWindowTitle(QObject::tr("Splitter"));
  29. splitterMain->show();
  30. return a.exec();
  31. }

解析:

1.QSplitter的构造方法:

QSplitter *splitterMain=new QSplitter(Qt::Horizontal,0);

第一个参数通过Qt::Horizontal 和 Qt::Vertical来设定为水平分割或垂直分割。第二个设定0代表是主窗口,无父窗口。

不过子splitter设置的

new QSplitter(Qt::Vertical,splitterMain);

代表主窗口是splitterMain。则子splitter就被添加到splitterMain中。

添加时为从左至右(或从上至下)添加;

2.添加QTextEdit控件。

QTextEdit *textLeft=new QTextEdit(QObject::tr("Left Widget"),splitterMain);

第一个参数设置文本内容,第二个参数设置主窗体。

3.设置拖动时是否实时更新

splitterRight->setOpaqueResize(false);

false为不实时更新——在拖动时候只显示一条灰色的线条,在拖动到位并释放鼠标后再显示分割条。默认为true——实时更新。

4.设定可伸缩控件:

splitterMain->setStretchFactor(1,1);

第一个参数代表控件序号,第一个序号为0.后面参数0代表不可伸缩,非0代表可伸缩。

这里设置右边的可伸缩。当拉伸整个窗口时候,左边保持原来宽度。

拉伸后,我们发现左边的宽度不变

Qt5的更多相关文章

  1. QT5利用chromium内核与HTML页面交互

    在QT5.4之前,做QT开发浏览器只能选择QWebkit,但是有过使用的都会发现,这个webkit不是出奇的慢,简直是慢的令人发指,Release模式下还行,debug下你就无语了,但是webkit毕 ...

  2. qt5中信号和槽的新语法

    qt5中的连接 有下列几种方式可以连接到信号上 旧语法 qt5将继续支持旧的语法去连接,在QObject对象上定义信号和槽函数,及任何继承QObjec的对象(包含QWidget). connect(s ...

  3. Ubuntu在wps-office等qt5程序下不能切换中文fcitx输入法的问题

    经检查,是缺了fcitx-qt的包.比如qt5的程序,需要一个叫fcitx-libs-qt5的包. 如果您在基于qt的程序下不能使用基于fcitx的中文输入法,请检查以下包是否已安装: sudo ap ...

  4. qt5中文代码编码编译问题

    qt中文代码用vs2010编译问题解决 总结说就是qt5默认UTF8不支持微软默认的ANSI(GB2312/GBK).解决办法是把中文字符串全部用 QString::fromLocal8Bit() 封 ...

  5. VS2010+Qt5.4.0 环境搭建(离线安装)

    原创作者:http://blog.csdn.net/solomon1558/article/details/44084969 前言 因项目需要Qt开发GUI,我根据网上资料及自己的经验整理了搭建vs2 ...

  6. qt5.5程序打包发布以及依赖【转】

    玩qt5也有一段时间了,惭愧的是一直没有好好的发布过程序,因为写的都是小程序没啥需要用到发布,而且qt也说不上很熟悉,本来打算到基本掌握qt之后再来研究研究怎么打包程序,最近晚上的空闲时间多了,闲着也 ...

  7. Qt5.5.1编译出来的程序出现libgcc_s_dw2-1.dll的解决方案

    问题如图: 输入"myudp2016.exe 1  " 后出现 这是因为没有在系统环境变量path里加上相关路径,我们添加如下路径: 比如说WIN7系统-开始-计算机-右键-属性- ...

  8. ubuntu 16.04 + N驱动安装 +CUDA+Qt5 + opencv

    Nvidia driver installation(after download XX.run installation file) 1. ctrl+Alt+F1   //go to virtual ...

  9. Qt5中的信号槽

    Qt4中的信号槽 Qt4中的信号槽是通过SIGNAL,SLOT两个宏,将参数转换成字符串.Qt编译前,会从源码的头文件中提取由signal和slot声明的信号和槽的函数, 将其组成一张信号和槽对应的字 ...

  10. qt5.4.0编译错误

    error1: 进程"C:\Qt\Qt5.4.0\Tools\QtCreator\bin\jom.exe"退出,退出代码 2 solution:去工具->选项->构建和 ...

随机推荐

  1. java(8) HashMap源码

    系统环境: JDK1.7 HashMap的基本结构:数组 + 链表.主数组不存储实际的数据,存储的是链表首地址. 成员变量 //默认数组的初始化大小为16 static final int DEFAU ...

  2. 将Linux系统的字体全改成中文

    # 修改字符集,否则可能报 input/output error的问题,因为日志里打印了中文 $ localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8 $ export ...

  3. 【CF896E】Welcome home, Chtholly 暴力+分块+链表

    [CF896E]Welcome home, Chtholly 题意:一个长度为n的序列ai,让你支持两种操作: 1.l r x:将[l,r]中ai>x的ai都减去x.2.l r x:询问[l,r ...

  4. poj 2125 Destroying The Graph 最小割+方案输出

    构图思路: 1.将所有顶点v拆成两个点, v1,v2 2.源点S与v1连边,容量为 W- 3.v2与汇点连边,容量为 W+ 4.对图中原边( a, b ), 连边 (a1,b2),容量为正无穷大 则该 ...

  5. window server 2012 II8 假陌生 碰到的问题

    1.我们网站是.net 3.5 开发的.还有一个32DLL 2.从windows server 2008 r2 iis 7 迁移过来碰到了3个问题,及解决办法 I. 在唯一密钥属性“fileExten ...

  6. poj1269 intersecting lines【计算几何】

    We all know that a pair of distinct points on a plane defines a line and that a pair of lines on a p ...

  7. 使用IntelliJ IDEA进行Python远程调试的需求(未完)

    使用IntelliJ IDEA进行Python远程调试的需求(未完) 在研究深度学习Machlearning时,有时候需要借助ubuntu搭建的tensorflow环境,另外也有越来越多的运算程序只能 ...

  8. C++基础知识之动态库静态库

    一. 静态库与动态库 库(library),一般是一种可执行的二进制格式,被操作系统载入内存执行. 我们通常把一些公用函数制作成函数库,供其它程序使用.函数库分为静态库和动态库 静态库和动态库区别: ...

  9. POJ 1556 - The Doors - [平面几何+建图spfa最短路]

    题目链接:http://poj.org/problem?id=1556 Time Limit: 1000MS Memory Limit: 10000K Description You are to f ...

  10. HDFS架构详解-非官档

    Namenode 1.namenode是一个中心服务器,单一节点(简化系统的设计和实现),负责管理文件系统的命名空间(namespace)以及客户端对文件的访问. 2.文件操作:namenode负责对 ...