Qt零基础教程(四)  QWidget详解(3):QWidget的几何结构

这篇文章里面分析了QWidget中常用的几种几何结构

下图是Qt提供的分析QWidget几何结构的一幅图,在帮助的 Window and Dialog Widgets 可以找到相关的内容介绍:

   

在Qt中横坐标的方向和我们平时看到的笛卡儿坐标系是相同的,但是纵坐标和笛卡儿坐标系是相反的,这里的纵坐标是向下的,不知道是不是和刚开始的电子管屏幕电子打在屏幕上的顺序是有关的。

从这副图里面可以看到,这里有两种几何结构:
1:不包含外边各种边框的几何结构。

2:包含外边各种边框的几何结构;

**************************************************************************

在这里先分析不包含边框的各种设置函数:

一般情况下式,不包含边框的部分是客户区部分,这里面就是我们正常操作的部分,可以在这部分里面添加子部件。这部分是一个长方形,那么对于一个长方形,就会有大小和位置。大小的话就是宽和高(国外的说法,和中国的长宽高不同),位置就是这个长方形在电脑屏幕上的位置。Qt中保存这个长方形是用了一个QRect这个类,这里我们不去深究这个类,后面的文章会详细说明一下这个类。要改改变这个大小和位置可以有如下几个函数:

  1. void resize(int w, int h);
  2. void resize(const QSize &);

这两个函数是改变了长方形的大小,第一个参数是宽,第二个是高。这里的英文是Width和Height。设置了大小之后的窗口还是可以通过鼠标进行改变窗口的大小。

通过下面的函数可以获得客户区的大小:

  1. QSize size() const

下面的函数分别获得了宽度和高度:

  1. int width() const
  2. int height() const

如果要设置不可以改变的窗口:

  1. set FixedHeight(int h)

这个时候高度就是固定的了,不可以改变高度,但是可以改变宽度

  1. set FixedWidth(int w)

这个时候宽度就是固定的了,不可以改变宽度,但是可以改变高度

  1. void setFixedSize(const QSize & s)
  2. void setFixedSize(int w, int h)

通过上面的这两个函数,高度和宽度都是固定的了,不可以通过鼠标来改变窗口的宽度和高度。

同时改变大小和位置的函数是:

  1. void setGeometry(int x, int y, int w, int h);
  2. void setGeometry(const QRect &);

x和y相对应的就是x坐标和y坐标。这里不可以单独的设置x和y的坐标。

**************************************************************************

在这里分析包含边框的各种设置函数:

包含边框,这个边框有大小和位置,是窗口在电脑屏幕上面显示的整个区域。

要改改变这个大小和位置可以有如下几个函数:

这里没有设置这个大小的函数,因为通过上面不包含边框函数的设置,就可以设置包含边框大小了,要设置包含边框的大小还是要通过上面的函数。通过下面的函数可以获得整个窗口的位置和大小:

  1. QRect frameGeometry() const

但是这里可以设置整体窗口的位置

  1. void move(int x, int y)
  2. void move(const QPoint &)

然后可以通过下面的函数来获得左上角的坐标:

  1. QPoint pos() const

后面会陆续分析QWidget中的其他的一些属性的功能即设置函数。

谢谢。

Qt零基础教程(四)QWidget详解(3):QWidget的几何结构的更多相关文章

  1. Qt零基础教程(四) QWidget详解篇

    在博客园里面转载我自己写的关于Qt的基础教程,没次写一篇我会在这里更新一下目录: Qt零基础教程(四) QWidget详解(1):创建一个窗口 Qt零基础教程(四) QWidget详解(2):QWid ...

  2. springboot2.x基础教程:Swagger详解给你的接口加上文档说明

    相信无论是前端还是后端开发,都或多或少地被接口文档折磨过.前端经常抱怨后端给的接口文档与实际情况不一致.后端又觉得编写及维护接口文档会耗费不少精力,经常来不及更新.其实无论是前端调用后端,还是后端调用 ...

  3. Docker基础教程(命令详解)

    # docker --help Usage: docker [OPTIONS] COMMAND [arg...] docker daemon [ --help | ... ] docker [ -h ...

  4. C++框架_之Qt的窗口部件系统的详解-上

    C++框架_之Qt的窗口部件系统的详解-上 第一部分概述 第一次建立helloworld程序时,曾看到Qt Creator提供的默认基类只有QMainWindow.QWidget和QDialog三种. ...

  5. Spring4.X + spring MVC + Mybatis3 零配置应用开发框架搭建详解(1) - 基本介绍

    Spring4.X + spring MVC + Mybatis3 零配置应用开发框架搭建详解(1) - 基本介绍 spring集成 mybatis Spring4.x零配置框架搭建 两年前一直在做后 ...

  6. C++框架_之Qt的信号和槽的详解

    C++_之Qt的信号和槽的详解 1.概述 信号槽是 Qt 框架引以为豪的机制之一.所谓信号槽,实际就是观察者模式.当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal ...

  7. “全栈2019”Java第一百零三章:匿名内部类详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  8. mysql基础篇 - SELECT 语句详解

    基础篇 - SELECT 语句详解         SELECT语句详解 一.实验简介 SQL 中最常用的 SELECT 语句,用来在表中选取数据,本节实验中将通过一系列的动手操作详细学习 SELEC ...

  9. C++11 并发指南四(<future> 详解三 std::future & std::shared_future)

    上一讲<C++11 并发指南四(<future> 详解二 std::packaged_task 介绍)>主要介绍了 <future> 头文件中的 std::pack ...

随机推荐

  1. MySql的卸载问题

    windows下mysql的卸载: 彻底卸载Mysql的方法:   (1),先在服务(开始——>控制面板——>管理工具——>服务)里停掉MySQL的服务.打开控制面板-添加删除程序, ...

  2. 【Linux】鸟哥的Linux私房菜基础学习篇整理(十一)

    1. 直接将命令丢到后台中执行“&”,在命令最后加“&”.    将目前的工作丢到后台中暂停:[Ctrl]+z 2. jobs [-lrs]:查看目前的后台工作状态.参数:-l:除了列 ...

  3. 揭开Linux操作系统的Swap交换区之谜

    揭开Linux操作系统的Swap交换区之谜 Swap,即交换区,除了安装Linux的时候,有多少人关心过它呢?其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要.通过调整Swap ...

  4. C++ Primer 随笔 Chapter 13 复制控制

    1.复制控制包含的内容:复制构造函数.赋值操作符.析构函数 2.复制构造函数: a. 定义:只有单个形参,而且该形参是对本类类型的引用,这样的构造函数被成为复制构造函数 b. 适用情况: (1)根据一 ...

  5. [转]Android DPAD not enabled in AVD

     转自:http://blog.csdn.net/flyhigh200703/article/details/8955484 问题描述:打开Android的仿真器,右侧的按键部分对于上下左右键出现以下 ...

  6. 测试使用wiz来发布blog

    晚上尝试了下用wiz写随笔并发布,貌似成功了,虽然操作体验和方便性上不如word,但起码它集成了这个简单的功能可以让我用:如果能让我自动新建blog文章并自动定时更新发布就完美了.2013年7月5日1 ...

  7. dll文件已经引用,但using找不到命名空间

    一:问题截图 二:解决办法 1.没看到lz的代码中有Vancl.Server的dll. 2.确实有编译不过的问题,是Vancl.WindowsServices这个工程的target framework ...

  8. Maximum Subarray——LeetCode

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  9. ARM机器码分析

    我们编写的汇编程序还是不够底层,CPU都是对机器码进行操作的,所以还需要用汇编器将汇编代码转换成机器码才能被CPU处理.下面举几个例子来说说分析ARM机器码的方法. 对编译连接之后得到的ELF进行反汇 ...

  10. 《算法问题实战策略》-chaper8-动态规划法

    Q1:偶尔在电视上看到一些被称为“神童”的孩子们背诵小数点以后几万位的圆周率.背诵这么长的数字,可利用分割数字的方法.我们用这种方法将数字按照位数不等的大小分割后再背诵. 分割形式如下: 所有数字都相 ...