Qt 的几个核心机制总结之 布局(QWidget可以设置setSizePolicy,而QSizePolicy有Fixed,minimum,maximum,preferred,expanding,ignore等7个属性,还可以横竖分开)

1.Qt布局的作用

Qt的布局是通过布局管理器来实现的,布局管理器负责在父类窗口部件区域构建子窗口部件,使得放置在窗体中的每个窗口部件都有一个适合的大小和位置,并且能够随着应用程序本身的变化而变化从而达到不改变整体的布局的结构的效果。相对于通过设定绝对位置来搭建界面的方法来讲有如下优点

1.1.父窗口改变的时候,子窗口不能作出相应的调整。

1.2.不用人工计算这些位置和大小

2.Qt中的布局类及继承关系:

QBoxLayout  QHBoxLayout  QVBoxLayout  QGridLayout  QFormLayout  QStackedLayout

继承关系图如下:

QBoxLayout:直线布局,可以规定排序的方向是从左到右还是从右到左,从上到下还是从下到上布局

QHBoxLayout  :水平布局

QVBoxLayout  :垂直布局

QGridLayout  : 将空间划分为若干个行和列,并把子窗口部件放置到划分成的一个个小空间中

QFormLayout :表格布局把布局空间划分为两列,一列一般放标签,另一列一般用于放置LableEdit之类的窗口部件。

QStackedLayout:把一系列窗口部件排列成堆叠的形式,每次只能顶部的部件是可见的。

3.改善布局结构

大小暗示sizeHint在未被重载的情况下,如果该窗口部件属于某个布局管理器,那么返回的值为QT为这个部件推荐的尺寸。如果不属于任何布局管理器的时候返回无效的值

最小大小暗示minimumsizehint :为某个窗口部件提供最小大小的限制。任何小于这个尺寸的窗口都被限制为这个大小

大小策略 QSizePolicy

Fix  不会发生任何的伸缩

minimum  推荐的大小是它的最小尺寸,它不会变得更小,但是可以变得更大

maximum 推荐的大小是它的最大尺寸,不会变得更大

preferred   推荐大小为优先选择,可以变大或者变小

expanding  能够感知到推荐的大小,但是会以尽可能大的空间来放置窗口部件

ignore       不能感知到推荐的大小,会以尽可能大的空间来放置窗口部件

伸缩因子

用于说明在增大窗体的时候,对不同的子窗口部件使用不同的放大比例。通过设置qsizePolicy::horizontalstretch   qsizePolicy::verticalstretch来实现

大小限制

设置窗口的最大大小最小大小,通过sizeConstraint来获取,通过setsizeconstraint来设置

空白和边距

空白指的是整个布局四周距离窗体边缘的距离,间距指的是布局内部各个窗口部件之间的距离

空白设置setcontentmargins,间距设置setspacing

对于栅格布局和表格布局使用的是sethorizonspacing和setverticalspacing来设置。

4.布局管理器的基本操作

向布局中增加部件

向布局中删除部件

取消布局

应用一个布局

http://blog.csdn.net/jimmy2013_1_1/article/details/8598264

时间: 2024-10-10 21:52:27

Qt 的几个核心机制总结之 布局(QWidget可以设置setSizePolicy,而QSizePolicy有Fixed,minimum,maximum,preferred,expanding,ignore等7个属性,还可以横竖分开)的相关文章

Qt核心机制与原理

转:  https://blog.csdn.net/light_in_dark/article/details/64125085 ★了解Qt和C++的关系 ★掌握Qt的信号/槽机制的原理和使用方法 ★了解Qt的元对象系统 ★掌握Qt的架构 ★理解Qt的事件模型,掌握其使用的时机 信号与槽.元对象系统.事件模型是Qt机制的核心,如果您想要掌握Qt编程,就需要对它们有比较深入的了解.本章重点介绍了信号与槽的基本概念和用法.元对象系统.Qt的事件模型,以及它们在实际使用过程中应注意的一些问题. Qt对

Qt的信号与槽机制

1.信号和槽机制是QT的核心机制,要精通QT编程就必须对信号和槽有所了解. 2.信号和槽是一种高级接口,应用于对象之间的通信,它是QT的核心特性,也是QT区别于其它工具包的重要地方. 3.信号和槽是QT自行定义的一种通信机制,它独立于标准的C/C++语言,因此要正确的处理信号和槽,必须借助一个称为moc(Meta Object Compiler)的QT工具,该工具是一个C++预处理程序,它为高层次的事件处理自动生成所需要的附加代码. 4.在我们所熟知的很多GUI工具包中,窗口小部件(widget

Qt的内部进程通信机制 [转]

Qt 作为一种跨平台的基于 C++ 的 GUI系统,能够提供给用户构造图形用户界面的强大功能.自从 1996 年 Qt 被 Trolltech公司发布以来,该系统成为世界上很多成功的图形用户应用所使用的主要系统.更为重要的是,Linux 操作系统的桌面环境系统 KDE 也是基于 Qt构造的.目前,Qt 已经提供了对包括 MS/Windows.Unix/X11 和嵌入式平台的支持,得到了越来越广泛的应用. 在 Qt 系统中,不仅有着构造完善的系统结构,而且为了满足用户对编写图形用户界面应用的种种需

QT的信号和槽机制简介

信号与槽作为QT的核心机制在QT编程中有着广泛的应用,本文介绍了信号与槽的一些基本概念.元对象工具以及在实际使用过程中应注意的一些问题. QT是一个跨平台的C++ GUI应用构架,它提供了丰富的窗口部件集,具有面向对象.易于扩展.真正的组件编程等特点,更为引人注目的是目前Linux上最为流行的KDE桌面环境就是建立在QT库的基础之上.QT支持下列平台:MS/WINDOWS-95.98.NT和2000:UNIX/X11-Linux.Sun Solaris.HP-UX.Digital Unix.IB

qt中信号与槽机制

一. 简介 就我个人来理解,信号槽机制与Windows下消息机制类似,消息机制是基于回调函数,Qt中用信号与槽来代替函数指针,使程序更安全简洁. 信号和槽机制是 Qt 的核心机制,可以让编程人员将互不相关的对象绑定在一起,实现对象之间的通信. 信号 当对象改变其状态时,信号就由该对象发射 (emit) 出去,而且对象只负责发送信号,它不知道另一端是谁在接收这个信号.这样就做到了真正的信息封装,能确保对象被当作一个真正的软件组件来使用. 槽 用于接收信号,而且槽只是普通的对象成员函数.一个槽并不知

QT的信号与槽机制介绍

信号与槽作为QT的核心机制在QT编程中有着广泛的应用,本文介绍了信号与槽的一些基本概念.元对象工具以及在实际使用过程中应注意的一些问题. QT是一个跨平台的C++ GUI应用构架,它提供了丰富的窗口部件集,具有面向对象.易于扩展.真正的组件编程等特点,更为引人注目的是目前Linux上最为流行的KDE桌面环境就是建立在QT库的基础之上.QT支持下列平台:MS/WINDOWS-95.98.NT和2000:UNIX/X11-Linux.Sun Solaris.HP-UX.Digital Unix.IB

Spring 的核心机制:依赖注入(控制反转)

一.说到依赖注入(控制反转),先要理解什么是依赖. Spring 把相互协作的关系称为依赖关系.假如 A 组件调用了 B 组件的方法,我们可称A 组件依赖于 B 组件. 二.什么是依赖注入. 在传统的程序设计过程中,通常由调用者来创建被调用者的实例. 在依赖注入的模式下,创建被调用者的工作不再由调用者来完成,因此称为控制反转:创建被调用者实例的工作通常由Spring 容器来完成,然后注入给调用者,因此也称为依赖注入. 三.依赖注入的好处. 依赖注入让 Spring 的 Bean 以被指文件组织在

李洪强iOS开发之RunLoop的原理和核心机制

李洪强iOS开发之RunLoop的原理和核心机制 搞iOS之后一直没有深入研究过RunLoop,非常的惭愧.刚好前一阵子负责性能优化项目,需要利用RunLoop做性能优化和性能检测,趁着这个机会深入研究了RunLoop的原理和特性. RunLoop的定义 当有持续的异步任务需求时,我们会创建一个独立的生命周期可控的线程.RunLoop就是控制线程生命周期并接收事件进行处理的机制. RunLoop是iOS事件响应与任务处理最核心的机制,它贯穿iOS整个系统. Foundation: NSRunLo

MFC六大核心机制之二:运行时类型识别(RTTI)

上一节讲的是MFC六大核心机制之一:MFC程序的初始化,本节继续讲解MFC六大核心机制之二:运行时类型识别(RTTI). typeid运算子 运行时类型识别(RTTI)即是程序执行过程中知道某个对象属于某个类,我们平时用C++编程接触的RTTI一般是编译器的RTTI,即是在新版本的VC++编译器里面选用“使能RTTI”,然后载入typeinfo.h文件,就可以使用一个叫typeid()的运算子,它的地位与在C++编程中的sizeof()运算子类似的地方(包含一个头文件,然后就有一个熟悉好用的函数