Qt之布局管理--基本布局
Qt提供的布局类以及他们之间的继承关系
QLayout-----QGirdLayout
|
---QBoxLayout----QHBoxLayout
|
--QVBoxLayout
-----------------------------------------------------------------------------
常用到的布局类有:QHBoxlayout、QVBoxLayout、QGridLayout三种,分别是水平排列布局、垂直排列布局、表格排列布局。
常用到的方法有:addWidget()和addLayout().addWidget()用于在布局中插入控件,addLayout()用于在布局中插入子布局。
----------------------------------------------------------------------------
在布局管理还常用到 setMargin()用于设定边距,setSpacing()用于设定控件间距。
setColumnStretch()用于设置列的占空比。
-----------------------------------------------------------------------------
比起QHBoxLayout和QVBoxLayout,QGridLayout运用起来更加灵活。
QGridLayout的常用方法
1)addWidget方法:
//放置一个控件到一个单元格
void addWidget(QWidget *widget,int row,int column,Qt::Alignment alignment =0 )
//如果放置的控件超出一个单元格,则使用该方法。
void addWidget(QWidget *widget,int fromRow,int fromColumn,int rowSpan,int columnSpan,Qt::Alignment alignment = 0)
1》row:指放置控件的网格行号(行号从0开始);
2》column:指放置控件的网格列号(从0开始);
3》alignment:对齐方式。
4》fromRow:指放置控件的起始网格行号。
5》formColumn:指放置控件的起始网格列号。
6》rowSpan:指放置控件占多少行。
7》columnSpan:指放置控件占多少列。
2)addLayout
void addLayout(QLayout *layout,int row,int column,Qt::Alignment alignment = 0)
void addLayout(QLayout *layout,int row,int column,int rowSpan,int columnSpan,Qt::Alignment alignemnt = 0)
参数与addWidget类似。
3)setSpacing
void QGridLayout::setSpacing(int spacing)
设置控件水平和垂直之间的间隔
-----------------------------------------------------------------------------
在设计软件中各个部件的位置排列,有两种方法:
1)设置widget的父窗体的坐标和大小
widget->move(x,y);
widget->resize(width,height);
//widget->setGeometry(QRect(x,y,width,height));
优点:不想被布局约束,对这种控件可控制
缺点:在遇到很多个部件时,一个个算坐标会很麻烦。
-----------------------------------------------------------------------------
layout->addStretch();//添加可伸缩控件,我感觉就是占地方的那种
layout->setAlignment(Qt::AlignHCenter);//布局内控件水平居中
layout->setSpacing(10);//设置控件间的间隔为10
layout->setMargin(10);//设置页边距为10
Qt设计器中spacer控件
以上在控件位置调整时常用
-----------------------------------------------------------------------------
控制布局管理中的控件自使应方式(控件随主窗体伸缩方式(可自行增大或缩小))
QSizePolicy sizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
//可自行增大或缩小
Fixed:不能放大或缩小
Minimum: 不能小于sizeHint尺寸,可放大(若设置了最大尺寸 )
Maximum:不能放大,可缩小到允许的最小尺寸(若setMinimumSize(10,10)只能缩小到(10,10))
Preferred:控件的sizeHint是它的Hint,可以放大或缩小。
Expandint:控件可以自行增大或者缩小。
-----------------------------------------------------------------------------
Qt之布局管理--基本布局的更多相关文章
- PyQt5布局管理(1)
Qt布局管理按简单分可分为绝对位置布局和布局管理器布局 一.绝对位置布局: 组件不放在布局管理器中,通过函数setGeometry(x,y,width,height)来设定组件相对其父窗口的位置.其中 ...
- GTK+布局管理
GTK+布局管理 GTK+ 布局管理 在本章中,我们将讲述如何将构件布置在窗口与对话框中. 当我们在设计应用程序的图形界面时,我们首先要决定的是在程序中用到哪种构件和管理应用程序中的这些构件.为了方便 ...
- Swing——布局管理器
前言 在编写图形界面时,总是需要考虑的就是组件放在哪里,组件怎么大才合适.在Swing中就有现成的布局管理器帮我们做这些事情,我们不必写代码去一一安排.下面将介绍什么是布局管理器.Swing中常用布局 ...
- Java界面编程—布局管理
布局是指容器中组件的排列方式 常用的布局管理器 布局管理器名称 所属类包 说明 FlowLayout(流式布局) java.awt 组件按照加入的先后顺序.按照设置的对齐方式从左向右排列,一行排满后到 ...
- PyQt4布局管理——绝对定位方式
PyQt4中的布局管理器 布局管理器是编程中重要的一部分.所谓布局管理器是指我们在窗口中安排部件位置的方法.布局管理器有两种工作方式:绝对定位方式(absolute positioning)和布局类别 ...
- PyQt5(2)——调整布局(布局管理器)第一个程序
我们拖拽一个UI文件,转为PY文件后生成一个类Ui_MainWindow 此时,我们新建一个文件,用来控制业务逻辑(继承界面中的类),跟界面分开,这样我们就完成了界面和逻辑相分离(这段代码使用率基本1 ...
- [Tkinter 教程] 布局管理 (Pack Place Grid)
原系列地址: Python Tkinter 简介: 本文讲述如何使用 tkinter 的布局管理 (被称作 layout managers 或 geometry managers). tkinter ...
- [Tkinter 教程12] 布局管理 (Pack Place Grid)
简介: 本文讲述如何使用 tkinter 的布局管理 (被称作 layout managers 或 geometry managers). tkinter 有三种布局管理方式: pack grid p ...
- PyQt5笔记之布局管理
代码:界面与逻辑分离 这是使用Designer做出的GUI,然后通过转换得到的Py代码.(界面文件) # -*- coding: utf-8 -*- # Form implementation gen ...
随机推荐
- 客户端JavaScript-如何执行
客户端JavaScript程序有四部分:内联脚本.HTML事件处理程序.URL中的JavaScript.外联脚本:所有这些单独的代码共用同一个全局Window对象,它们可以看到相同的Document对 ...
- <meta>指定浏览器模式(browser mode)或文档模式(document mode)无效
这是前两天解决的一个故障,准确的说它不是一个SharePoint的问题,而是IE8浏览器或者说是HTML代码的问题,但我感觉还是挺有意思的,所以贴上来分享一下. 基础知识 简单的讲,就是IE浏览器中有 ...
- MongoDB学习记录
一.操作符 "$lt" :"<""$lte" :"<=""$gt" :"> ...
- spring mvc controller间跳转 重定向 传参 (转)
转自:http://zghbwjl.blog.163.com/blog/static/12033667220137795252845/ 1. 需求背景 需求:spring MVC框架contr ...
- javascript 数字进制转换
//十进制转其他 var x=110; alert(x); alert(x.toString(8)); alert(x.toString(32)); alert(x.toString(16)); // ...
- ubuntu下的时间设定(硬件时间,系统时间,本地时间)
问题的来由是在这里: 在cron里设定任务是在凌晨6点执行,检查日志时发现时间总是不对,是在22点左右的时间执行的.研究发现,任务是在本地时间的6点执行了,但不知为什么syslog中的时间都是为utc ...
- brew
brew 又叫Homebrew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件, 只需要一个命令, 非常方便 brew类似ubuntu系统下的apt-get的功能. 安装下 ...
- netstrem获取302后的地址,可用来截图,加载实际跨域文件
直接放代码,老外博客看来的,老外还是牛逼,这都用出来了:http://jessewarden.com/2009/03/handling-crossdomainxml-and-302-redirects ...
- 【OpenWRT】【RT5350】【三】MakeFile文件编写规则和OpenWRT驱动开发步骤
一.Makefile文件编写 http://www.cnblogs.com/majiangjiang/articles/3218002.html 可以看下上面的博客,总结的比较全了,在此不再复述 二. ...
- Git 常见的一些小命令
Git 常见的一些命令 关于一些参数比较多,比较复杂的都有单独进行介绍 1. git cherry-pick 挑拣命令,当我们不想合并分支,或者git pull 更新仓库,而是 ...