Qt5布局管理(一)——QSplitter分割窗口类
转载:LeeHDsniper
概述
本文首先通过三个实例分别介绍Qt5的分割窗口QSplitter类、停靠窗口QDockWidget类、堆栈窗体QStackedWidget类,然后介绍布局管理器的使用。
最后通过一个综合实例介绍以上内容的综合应用。
分割窗口QSplitter类
实例效果
重要代码
这个程序的所有代码都集中在main.cpp文件中:
#include <QApplication>
#include <QSplitter>
#include <QTextEdit>
#include <QTextCodec>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//ont::QFont(const QString & family, int pointSize = -1, int weight = -1, bool italic = false)
//第一个参数是字体族,第二个是字体尺寸,第三个是加粗系数,第四个是斜体设置
QFont font("ZYSong18030",);//指定显示字体
a.setFont(font); QSplitter *splitterMain;
QTextEdit *textleft;
QSplitter *splitterRight;
QTextEdit *textUp;
QTextEdit *textBottom;
splitterMain=new QSplitter(Qt::Horizontal,); //Horizontal:水平的
textleft=new QTextEdit(QObject::tr("Left Widget"),splitterMain);
textleft->setAlignment(Qt::AlignCenter);
//右部分分割窗口
splitterRight=new QSplitter(Qt::Vertical,splitterMain); //Vertical:垂直的
splitterRight->setOpaqueResize(false); //Opaque:不透明的
textUp =new QTextEdit(QObject::tr("Top Widget"),splitterRight);
textUp->setAlignment(Qt::AlignCenter);
textBottom=new QTextEdit(QObject::tr("Bottom Widget"),splitterRight);
textBottom->setAlignment(Qt::AlignCenter);
splitterMain->setStretchFactor(,); //Stretch Factor:拉伸系数
splitterMain->setWindowTitle(QObject::tr("Splitter"));
splitterMain->show(); return a.exec();
}
代码笔记
1.字体设置代码
QFont::QFont(const QString & family, int pointSize = -, int weight = -, bool italic = false)
这是QFont对象的构造函数之一,第一个参数是字体族,第二个是字体尺寸,第三个是加粗系数,第四个是斜体设置。
2.设置QTextEdit控件的父对象和段落对齐方式
textleft=new QTextEdit(QObject::tr("LeftWidget"),splitterMain);
textleft->setAlignment(Qt::AlignCenter);
对于每个控件的构造函数,都会有一个默认为0的参数设置其父对象。
而QTextEdit::setAlignment函数设置其段落对齐方式。
3.初始化QSplitter控件的分割方向和其缩放风格
splitterRight=new QSplitter(Qt::Vertical,splitterMain);
splitterRight->setOpaqueResize(true)
QSplitter类的构造函数第一个参数表示该分割窗口是水平分割还是垂直分割,第二个参数是其父对象。
QSplitter的setOpaqueResize设置了分割窗口在缩放时的风格。
opaqueResize : bool
This property holds whether resizing is opaque.
The default resize behavior is style dependent (determined by the SH_Splitter_OpaqueResize style hint).
However, you can override it by calling setOpaqueResize()
假设一个QSplitter对象中有两个窗口,当你调整中间的分割线的位置时,当该QSplitter对象的opaqueResize属性是false,
那么会出现一个虚线表示调整后的分割线的位置,反之,则什么也没有。
4. 设置QSplitter的伸缩因子
splitterMain->setStretchFactor(,);
setStretchFactor( int index, int stretch )用于设定可伸缩控件。
第一个参数指定要设置控件的序号(按插入顺序从0依次编号);第二个参数大于0时表示此控件为可伸缩控件。
在上面的实例中,splitterMain对象中,共有两个控件:一个是左边的textleft控件,另一个是右边的splitterRight对象。那么上面的这行代码就表明,在整个窗口也就是splitterMain在缩放时,splitterRight对象会保持不伸缩状态。但是当我们去缩放的时候,发现两个分割窗口都发生了伸缩。我猜测是因为所有的控件都是默认伸缩的。
这一点可以从下面的例子证明。
修改上面的代码为:
splitterMain->setStretchFactor(,);
意味着左边的textleft控件将是可伸缩的:
继续修改代码:
splitterMain->setStretchFactor(,);
意味着右边的splitterRight控件是可伸缩的:
继续修改代码:
splitterMain->setStretchFactor(,);
显然在splitterMain中是不存在index为2的控件的,但是窗口在缩放时还是体现出了两个控件都伸缩的特性。
由此可以证明我的上述猜测是正确的。
Qt5布局管理(一)——QSplitter分割窗口类的更多相关文章
- Qt5布局管理(三)——QStackedWidget堆栈窗口类
转载:LeeHDsniper 实例效果如下图: 如上图,堆栈窗口左半部分是一个QListWidget对象,右半部分是分别是三个标签.通过点击左边不同的项目,可以使得右边的Lable进行切换. 具体的结 ...
- Qt5布局管理(二)——QDockWidget停靠窗口类
转载:LeeHDsniper 停靠窗口类QDockWidget 实例效果 如右图所示,左半部分MainWindow是该窗口的中心窗口,右边的最下面两个停靠窗口可以跳出该窗口: 但是第一个停靠窗口只能停 ...
- QT5学习:分割窗口类的使用
分割窗口在应用程序中经常用到,它可以灵活分布窗口布局,经常用于类似文件资源管理器的窗口设计中,然后抱着这样的想法简单的实现了下 [cpp] view plain copy //main.cpp ...
- Chapter3:Qt5布局管理
3.1分割窗口QSplitter类 QSplitter *splitterMain = new QSplitter(Qt::Horizontal,0); QTextEdit *textLeft = n ...
- 【转载】Pyqt QSplitter分割窗口
转载来自: http://blog.sina.com.cn/s/blog_4b5039210100h3ih.html 分割窗口在应用程序中经常用到,它可以灵活分布窗口布局,经常用于类似文件资源管理器的 ...
- qt布局管理-缩放、多窗口切换
关于缩放的布局 所有控件要求与主窗口同时缩放,那么在所有控件设置好布局后,最后点击最外侧的主控件,选择水平布局或者垂直布局即可. 另外每个空间的属性可更改,如SizePolicy用于设置空间是否可缩放 ...
- qt QSplitter分割窗口
#include <QApplication> #include <QFont> #include <QTextEdit> #include <QSplitt ...
- Qt创建分割窗口
1.QT中QSplitter类可以用来灵活分割窗口,从而产生可用的布局,在以后进行界面布局很有用. 2.先看代码,这个分割窗口按顺序添加子窗口: #include "mainwindow.h ...
- PyQt5之布局管理
目录 一 写在开头 1.1 本文内容 二 绝对布局 三 布局类 3.1 水平布局(QHBoxLayout)和垂直布局(QVBoxLayout) 3.2 水平布局和垂直布局实例 3.3 网格布局(QGr ...
随机推荐
- 关于apicloud ios自定义模块引用第三方framework not found for architecture armv7
1 .自定义模块 新建模块必须是静态库 2.使用的第三方framework 必须要把 .h文件开放出来 3.编译要用 真机模式 (上传模块以后,自定义load要编译,用生成的二维码调试) 4. 添加监 ...
- 《Python》 面向对象初识(组合)
一.面向对象(组合): 定义:给一个类的对象封装一个属性,这个属性是另一个类的对象. 意义:让类的对象与另一个类的对象产生关系,类与类之间产生关系. 人物使用武器攻击另一个人物: class Game ...
- NBUT 1217 Dinner 2010辽宁省赛
Time limit 1000 ms Memory limit 32768 kB Little A is one member of ACM team. He had just won the g ...
- Code Igniter数据库操作函数大全
查询 $query = $this->db_query("SELECT * FROM table"); ==================================* ...
- 用于主题检测的临时日志(0ece3f5c-d74f-449c-85a7-ed53fffb0e94 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)
这是一个未删除的临时日志.请手动删除它.(abf5973f-502f-47e6-8825-4dd1c2cdd799 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)
- 微信小程序插件开发
小程序插件功能介绍 插件,是可被添加到小程序内直接使用的功能组件.开发者可以像开发小程序一样开发一个插件,供其他小程序使用.同时,小程序开发者可直接在小程序内使用插件,无需重复开发,为用户提供更丰富的 ...
- win10系统如何进入BIOS模式
前言 安装双系统时,一般需要设置一些BOOT的选项值,比如security boot的选项.以前都是重启之后按F2或者F12等进入BIOS模式的, 但是博主按照这种方式没有正确进入,本文就针对这一问题 ...
- 很全面的WinRAR实用技巧系列 - imsoft.cnblogs
WinRAR也可以管理我的桌面时间长了,桌面上堆的东西实在太多,平时该如何管理呢?安装了WinRAR的朋友可以请它来帮忙,用它管理清除无用的桌面文件或图标. 以XP系统为例,系统所在目录是“c:\wi ...
- LG3372 【【模板】线段树 1】
介绍我的三种算法 1.线段树 既然这题是线段树板子,我还是尊重一下先发这个.跑的时间376ms不是很快,但也还是不错.O(nlogn). #include<iostream> #inclu ...
- C语言指针和操作系统的逻辑地址
你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址,不和绝对物理地址相干.只有在Intel实模式下,逻辑地址才和物理地址相等 ...