Qt的5种常用布局搭建

Qt布局详解:

 

界面开发首先要对整个界面进行布局,使窗体上的所有的控件必须有一个合适的尺寸和位置。那么做出来的界面才看起来美观。

那么如何对界面进行布局呢?Qt提供了一些类负责排列窗体上的控件,主要有:QHBoxLayout,QVBoxLayout,QGridLayout,QFormLayout,QStackLayout。(布局管理类)这些类简单易用,无论在代码中还是用Qt Designer开发程序都能用到。

常用的布局方法:

(1)使用水平布局类QHBoxLayout;

(2)使用垂直布局类QVBoxLayout;

(3)使用网格布局类QGridLayout;

(4)使用表格布局类QFormLayout;

(5)使用分组布局类QStackLayout(  QStackedLayout类把子控件进行分组或者分页,一次只显示一组或者一页,隐藏其他组或者页上的控件)。

这些方法可以嵌套使用。使用这些Qt布局管理类的另一个原因是,在程序、系统改变字体,语言或者在不同的平台上运行时,布局管理器能够自动调整窗体里所有控件的大小和尺寸。

布局管理的三种方式:

Qt中有三种方式对窗体上的控件进行布局管理:

1.绝对位置定位(absolute positioning):控件布局是固定位置,没有自适应功能。

例子如下:

QWidget *pWidget = new QWidget;

QLabel label(pWidget);

label.setText(QObject::tr("姓名:"));

label.setGeometry(10,10,20,20);

QLineEdit namedLineEdit("小王",pWidget);

namedLineEdit.setGeometry(35,10,50,20);

QPushButton *btn = new QPushButton(QObject::tr("关闭"),pWidget);

btn->setGeometry(90,10,40,20);

2.手工布局(manual layout):给出控件的绝对位置,但是他们的尺寸根据窗口的大小确定,可以通过重写窗体控件的resizeEvent()实现对子控件的大小设置。

3.布局管理器(layout managers):运用QHBoxLayout、QVBoxLayout、QGridLayout 、QFormLayout、QStackLayout布局。

(1).Horizontal Layout布局设置(水平布局):他包含的对象都横向排列开,示例如图3-1所示:

                                             图 3-1  水平布局

(2).Vertical Layout布局设置(垂直布局):他包含的对象都纵向排列开,示例如图3-2所示:

图3-2  竖直布局

(3).Grid Layout布局设置(网格布局):将控件放置到网格中布局,它本身会从父窗口或父布局中占据尽可能多的界面空间,然后把自己的空间划分为行和列,再把每个控件塞到设置好的一个或多个单元格中。通常情况下 QGridLayout不需要自己添加空白条
QSpacerItem,因为其他功能控件把各自的单元格占据之后,剩下没控件占据的单元格自然就是空的,空的格子默认里面什么都没有,也没有空白条。示例如图3-3所示:

图3-3 网格布局

(4).Form Layout布局设置(表格布局):专门用于管理输入控件和与之相关的标签等表单布局,QFormLayout固定为两列布局,并针对表单做了建模,配套了一堆方便使用的函数。网格布局器的基本单元是单元格,而表单布局器的基本单元是行。表单布局器是高度建模并封装的,它没有
addWidget()和 addLayout()之类的函数,它只有addRow()函数。表单布局器中一行的空间可以由多个控件占据,也可以由一个控件占据。示例如图3-4所示:

图3-4 表格布局

(5).布局管理器在指定的位置留出一块空间:(Qt Designer中,可以加入一个spacer实现这一功能)示例如图3-5所示:

图3-5  布局留出指定空间

(6).QSpliter分割器的作用:分裂器 QSplitter 是一个实体功能控件,它的基类是 QFrame,QFrame 基类正是 QWidget。QSplitter 可以独立存在,可以作为父窗口容纳多个子控件,分裂器会完全拥有内部的子控件。在 Qt 设计师或 QtCreator 设计模式左边 Widget Box 里面没有分裂器可以拖动,使用分裂器的方式是:选中已有的控件,然后点击上面工具栏的水平分裂器或垂直分裂器按钮。比如上图是将三个丰富文本编辑器作为一个水平分裂器排布
的。分裂器内每个控件都有一个手柄 Handle,水平分裂器内控件的手柄在左边,垂直分裂器内控件的手柄在控件上方。第 0 个控件的手柄是永久隐藏的,分裂器自身占据的大矩形四个边界线通常不能拖动拉大,只能拖动控件之间的手柄,比如上图的手柄 1 和 手柄 2 。分裂器整体的尺寸不是用户控制的,而在分裂器内部的控件尺寸可以让用户手工拖动手柄来控制。在程序运行时,水平分裂器内各个控件的宽度、垂直分裂器内部各个控件的高度, 一般都是用户拖动手柄控制,这是分裂器和布局器最大的不同。

具体操作如下图3-6所示:

图  3-6

实际效果如下图3-7所示:

图 3-7分割实际效果图

时间: 2024-08-25 09:12:06

Qt的5种常用布局搭建的相关文章

java swing的四种常用布局

第三种卡片布局可用于完成简单的抽奖程序,这个还是挺有趣的. 一:流式布局FlowLayout 实现代码: import java.awt.FlowLayout ; import javax.swing.JFrame ; import javax.swing.JButton ; class Tester { public static void main(String args[]) { JFrame frame = new JFrame("流式布局") ; frame.setLayou

两种常用布局方法

<!doctype html> <html> <head> <title>左部宽度固定,右部自适应</title> <meta charset="utf-8"/> <style type="text/css"> *{ margin:0px; padding:0px; font-size:14px; } div{ height:600px; } .left{ width:300px;

Extjs4 常用布局总结

1.anchor 固定布局 子组件尺寸相对于容器的尺寸,即父容器容器的大小发生变化时,使用anchor布局的组件会根据规定的规则重新渲染位置和大小( width:500,height:300, ).一般与布局column一起使用.设置相对于父容器的百分比. 2.absolute 绝对布局 X/Y坐标定位 3.accordion 手风琴布局 类似于QQ面板的好友分组 4.border    边框布局  将容器分为 east south west north center 5部分 5.card  

Qt在Windows下的三种编程环境搭建(图文并茂,非常清楚)good

尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/17363165 从QT官网可以得知其支持的平台.编译器和调试器的信息如图所示: http://qt-project.org/doc/qtcreator-3.0/creator-debugger-engines.html (Home | Docs | Qt Creator 3.0 | Debuggingand Analyzing | Setting Up

Qt在Windows下的三种编程环境搭建

尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/17363165 从QT官网可以得知其支持的平台.编译器和调试器的信息如图所示: http://qt-project.org/doc/qtcreator-3.0/creator-debugger-engines.html (Home | Docs | Qt Creator 3.0 | Debuggingand Analyzing | Setting Up

QT树莓派交叉编译环开发环境搭建(附多个exe工具下载链接)

前两天入手了一块2.8’的tft液晶显示屏,于是和树莓派连了一发,成功将命令行显示在了这块小的可怜的屏幕上之后,觉得这屏幕就显示个黑白内容太浪费了,于是考虑开发一个”脸”(图形用户界面,GUI).首先考虑用C语言或者Python来堆图形界面,但是发现不管是C语言的图形库SDL亦或者OpenGL来堆这货都有点麻烦,毕竟我也不是想显示个太过于复杂的图形界面在那块屏幕上,只是显示一个最基本的文字数字就满足了.于是考虑到QT库.之前曾经学过一段时间的QT For Win32,那个环境很好搭建,从http

Qt4.8在Windows下的三种编程环境搭建

Qt的版本是按照不同的图形系统来划分的,目前分为四个版本:Win32版,适用于Windows平台:X11版,适合于使用了X系统的各种Linux和Unix平台:Mac版,适合与苹果MacOSX:embedded版,适合于具有帧缓冲(frame buffer)的Linux平台. Qt-embedded和Qtopia Qt在刚出现的时候,对于Linux和Unix系统,只有构建于Xlib之上的X11版.但随着Linux操作系统在嵌入式领域的应用日渐广泛,Qt推出 了嵌入式的版本Qt-embedded(Q

Qt学习 之 多线程程序设计(QT通过三种形式提供了对线程的支持)

QT通过三种形式提供了对线程的支持.它们分别是, 一.平台无关的线程类 二.线程安全的事件投递 三.跨线程的信号-槽连接. 这使得开发轻巧的多线程Qt程序更为容易,并能充分利用多处理器机器的优势.多线程编程也是一个有用的模式,它用于解决执行较长时间的操作而不至于用户界面失去响应.在Qt的早期版本中,在构建库时有不选择线程支持的选项,从4.0开始,线程总是有效的. 线程类 Qt 包含下面一些线程相关的类: QThread 提供了开始一个新线程的方法 QThreadStorage 提供逐线程数据存储

Windows 8.1 应用再出发 - 几种常用控件

原文:Windows 8.1 应用再出发 - 几种常用控件 本篇为大家简单介绍Windows 商店应用中控件的用法,为方便讲解,我们在文本控件和按钮控件这两类中分别挑选有代表性的控件进行详细说明. 1. 文本控件 (1) TextBlock TextBlock是最常用的文本显示控件,重点关注以下属性: CharacterSpacing  字符之前的统一间距,间距 = 字体大小 / 1000.默认为0,正值增进跟踪和放宽字符间距.负值减少跟踪和收紧字符调间距. IsColorFontEnabled