【转】QT布局QGridLayout QHBoxLayout QVBoxLayout简要分析!!

转自:https://blog.csdn.net/sabcdefg/article/details/106693203

在分析之前,先吐槽下M$的MFC,竟然没有相对布局!(至少我不知道,每次都是使用代码控制布局),
M$这么多年,也不发展一下,你看C#都有相对布局...

参考精通Qt4编程(第2版),先看看总体的布局图

然后看看代码

CLoginDlg::CLoginDlg(QWidget* parent/* = NULL */) : QDialog(parent)
{//QGridLayoutusrLabel = new QLabel(tr("用户名:"));pwdLabel = new QLabel(tr("密  码:"));usrLineEdit = new QLineEdit;pwdLineEdit = new QLineEdit;pwdLineEdit->setEchoMode(QLineEdit::Password);gridLayout = new QGridLayout;gridLayout->addWidget(usrLabel, 0, 0, 1, 1);gridLayout->addWidget(usrLineEdit, 0, 1, 1, 3);gridLayout->addWidget(pwdLabel, 1, 0, 1, 1);gridLayout->addWidget(pwdLineEdit, 1, 1, 1, 3);//QHBoxLayoutokBtn = new QPushButton(tr("确定"));cancelBtn = new QPushButton(tr("取消"));btnLayout = new QHBoxLayout;btnLayout->setSpacing(60);btnLayout->addWidget(okBtn);btnLayout->addWidget(cancelBtn);//QVBoxLayoutdlgLayout = new QVBoxLayout;dlgLayout->setMargin(40);dlgLayout->addLayout(gridLayout);dlgLayout->addStretch(40);dlgLayout->addLayout(btnLayout);setLayout(dlgLayout);connect(okBtn, SIGNAL(clicked()), this, SLOT(accept()));connect(cancelBtn, SIGNAL(clicked()), this, SLOT(reject()));setWindowTitle(tr("登录"));resize(300, 200);
}

这里面一共有3个布局QGridLayout/QHBoxLayout/QVBoxLayout
看看QGridLayout

局管理器gridLayout中的具体位置,其中前两个实参分别表示行和列的位置(行号和列号),后两个参数分别表示行的跨度和列的跨度
gridLayout->addWidget(usrLineEdit, 0, 1, 1, 3);
QHBoxLayout/QVBoxLayout比较简单,一个是水平的排,一个是垂直的排

运行代码,结果如下:

为了方便看,我做了标识,然后放大窗口,又做了标识


图中的40,就是这行代码的功劳:dlgLayout->setMargin(40);
60是这行代码的功劳:btnLayout->setSpacing(60);
还有一行代码dlgLayout->addStretch(40),作如下解释:

函数QVBoxLayout::addStretch()函数在垂直布局管理器dlgLayout对象中加入一个大小为40的stretch,这将使得布局管理器gridLayout和btnLayout之间的默认距离设置为40,同时当上下拉伸对话框的高度时,该stretch可以自由伸缩,从而保证gridLayout和btnLayout管理器内部各窗口部件的高度以及彼此间的垂直距离保持不变。

以上,由于代码比较简单,大家也能一目了然吧.
可以看出,字体大小并不会随着窗口的变大而变大(当然控件的高度也没有变).

 

文章备份地址:https://netpt.net/forum.php?mod=viewthread&tid=37

承接Windows/Linux桌面应用开发(C/C++),专业coding10年+,值得信赖.
VC/MFC/QT
QQ:13571089

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/436211.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php下拉选项登录_php下拉选项的批量操作的实现代码

实现功能&#xff0c;操作项可以单独删除&#xff0c;批量项可以批量删除&#xff0c;批量显示&#xff0c;隐藏(改广告的数据库的status_is的值)&#xff1b;1.视图关键点&#xff1a;<?php echo $row->id?>全选选择操作删除显示隐藏/*单个删除*/2.控制器&#xff…

协议栈开发学习总结

近来一直很少些关于技术方面的文章&#xff0c;一来是被工作和生活所累&#xff0c;没有很多闲暇多余的时间,二来呢是觉得一直没有好的case&#xff0c;或则有好的case&#xff0c;但觉得目前在这个case方面&#xff0c;自己还不算很professional。今天心情不错&#xff0c;感觉…

【转】QGridLayout 详解

转自&#xff1a;https://blog.csdn.net/u013928315/article/details/78123573 一、QGridLayout属性介绍 1、QGridlayout以方格的形式管理窗口部件&#xff0c;先看QGridLayout的属性&#xff0c;如下图 2、各个参数的介绍 layoutLeftMargin ...至layoutBottomMargin在ui_Mai…

php网站评论模块怎么写,模块内容评论循环

一、作用用于循环查询模块评论数据(支持分页查询)二、语法{commentmodule模块名称....}{/comment}三、参数介绍(红色表示必填参数&#xff0c;蓝色表示系统默认参数)参数介绍module用来查询模块的评论&#xff0c;例如新闻模块&#xff0c;填写newssite站点id&#xff0c;默认当…

什么是LINQ?

什么是LINQ? LINQ&#xff0c;语言级集成查询&#xff08;Language INtegrated Query&#xff09;经过了最近 20 年&#xff0c;面向对象编程技术&#xff08; object-oriented (OO) programming technologies &#xff09;在工业领域的应用已经进入了一个稳定的发展阶段。程序…

宋体(Simsun)和新宋体(NSimsun)的区别

我们平常说的宋体&#xff08;Simsun&#xff09;全称为中易宋体&#xff0c;它和新宋体&#xff08;NSimsun&#xff09;是由北京中易中标电子信息技术有限公司制作并持有版权的两个TrueType 字体。自从微软向中易购买了这套字型后&#xff0c;它便成为了简体中文使用者最熟悉…

商业计划书最好就是十页篇幅

第一页是市场介绍&#xff1b;第二页分析市场问题&#xff1b;第三页写解决问题的方式&#xff1b;第四页调研市场&#xff1b;第五页分析竞争对手&#xff1b;第六页介绍核心竞争力&#xff1b;第七页写盈利模式&#xff1b;第八页写近期目标&#xff1b;第九页写资金预算&…

java import 出错,Eclipse的java代码出错:The import XXXX cannot be resolved

折腾Eclipse时&#xff0c;经常会遇到这种情况&#xff1a;缺少某个库&#xff0c;找到之后&#xff0c;需要将该库&#xff0c;jar包&#xff0c;加入到当前项目&#xff0c;使得代码中的import xxx得以正常导入。【如何在Eclipse中导入/添加(外部的)库/jar包】基本思路&#…

Platform Builder实践之配置文件

这篇文章主要讲解PB的配置文件。从用途方面分析&#xff0c;PB包含两种配置文件。分别是源码配置文件和镜像配置文件。下面分别讲解这两种配置文件。 一、源码配置文件&#xff1a;源码配置文件用于编译源码时使用。这里的源码是指Windows CE公开的源码&#xff0c;如驱动程序、…

【转】itk、vtk、qt 显示dicom 数据

转自&#xff1a;https://blog.csdn.net/Zzhouzhou237/article/details/107199076/ 以下代码实现了itk读取dicom数据&#xff0c;转换为vtkData&#xff0c;然后用Qt显示。 1、Qt Designer 搭建界面&#xff0c;QVTKOpenGLNativeWidget 是vtk的一个类&#xff0c;连接qt与vtk…

页面执行顺序

今天写绑定下拉用户控件中&#xff0c;下拉列表的数据时&#xff0c;发现竟然后台的数据为空. 今天才有点明白页面的执行顺序。 转载于:https://www.cnblogs.com/jskingli/archive/2008/05/09/1190176.html

Windows CE创建桌面快捷方式

在使用Platform Builder创建Windows CE系统的内核映入文件NK.bin时&#xff0c; 创建一个桌面快捷方式的步骤如下&#xff1a;1、创建一个快捷方式文件Test.lnk&#xff0c;格式如下&#xff1a; 17#/Windows/Test.exe 其 中&#xff0c;17表示#后面有多少个字符 2、将此文件拷…

php 国密,PHP实现国密算法SM4

1.SM4算法实现class SM4{const SM4_CK [0x00070e15, 0x1c232a31, 0x383f464d, 0x545b6269,0x70777e85, 0x8c939aa1, 0xa8afb6bd, 0xc4cbd2d9,0xe0e7eef5, 0xfc030a11, 0x181f262d, 0x343b4249,0x50575e65, 0x6c737a81, 0x888f969d, 0xa4abb2b9,0xc0c7ced5, 0xdce3eaf1, 0xf8ff…

【转】WM_MESSAGE、WM_COMMAND、WM_NOTIFY等消息有什么不同

转自&#xff1a;https://blog.csdn.net/newstarao/article/details/3775690 WM_MESSAGE是最普通的WINDOWS消息&#xff0c;对于这种类型的消息没什么好说的。那WM_COMMAND和WM_NOTIFY消息都是WINDOWS CONTROL给它的父窗体发的消息&#xff0c;那这两种消息有什么不同呢&#…

修改了WINCE自带的驱动程序后如何编译

修改了WINCE自带的驱动程序后如何编译&#xff1f;如果是自己开发的驱动程序如何编译&#xff1f; 1、分为IDE方式和命令行方式。 IDE 方式的编译很简单&#xff0c;以PB5.0为例&#xff0c;打开定制内核的工程&#xff0c;在左边的“workspace”—“FileView”中找到你已经修…

Properties 类的使用

Properties 类已不是新东西了&#xff0c;它在 Java 编程的早期就有了&#xff0c;并且几乎没有什么变化。J2SE 的 Tiger 版本增强了这个类&#xff0c;不仅可以用它在单独一行中指定用等号分隔的多个键-值对&#xff0c;还可以用XML 文件装载和保存这些键-值对。在 驯服 Tiger…

php 9000 端口没起来,ubuntu fpm-php 未监听9000端口问题

今天搞一台新的ubuntu服务器&#xff1b;配置好nginx后 死活解析不了php文件&#xff0c;反复修改配置文件未果&#xff1b;于是怀疑fpm-php,遂 &#xff1a;netstat -ant |grep 9000惊奇的发现9000端口竟然没有被占用&#xff0c;可是php5-fpm服务已经开启了&#xff1b;于是查…

【转】控件通知消息

转自&#xff1a;https://blog.csdn.net/kinghzking/article/details/6180956 2008年04月06日 星期日 00:09 控件通知消息有很多种&#xff0c;但是有一种是很常用&#xff0c;但是又不是很容易掌握的&#xff0c;那就是WM_NOTIFY&#xff0c;我试着对此做一下比较全面的论述…

python 装饰器 java,python之各种装饰器的使用

"""装饰器&#xff0c;带参数的装饰器&#xff0c;类的装饰器判断是否为可迭代的from collections import Iterableprint(isinstance([1,2,3],Iterable))"""# 1、简单的装饰器def debug(func):def wrap():print(fdebug:func name is {func.__nam…

WINCE 网卡控制

最近在搞wifi上网&#xff0c;看了些这方面的资料&#xff0c;稍微总结点东西&#xff1a;&#xff09; DeviceIoControl和底层通信&#xff1a; 方法1 &#xff1a;把第二个参数设为IOCTL_NDIS_REBIND_ADAPTER。 方法2 &#xff1a;把第二个参数设为IOCTL_NDIS_UNBIND_ADAPTER…