一杯清酒邀明月
天下本无事,庸人扰之而烦耳。
posts - 3121,comments - 209,views - 578万

坐标系统

每个GUI操作系统都有特定的坐标系统,坐标系统用于在图形界面程序中进行窗口、组件的定位(定位的前提就是要有坐标系统)及窗口部件的大小设置。
其中定位类型有顶级窗口组件的定位、窗口内部的组件定位和窗口部件的大小设置。

Qt中使用统一的坐标系统定位窗口部件的位置和大小。
Qt的组件类提供成员函数在坐标系统中进行定位,如函数x()、y()。
QWidget类提供了窗口部件所需的坐标系统成员函数。
这里写图片描述
其中上图外层坐标表示窗口在屏幕中的坐标,内层表示用户区,除去标题栏和最小化、最大化、关闭按钮的坐标,在坐标系中横为x(向右为增),竖为y(向下为增)。

坐标系统相关成员函数

这里写图片描述
QWidget直接提供的x()、y() 、width()、 height()函数表示窗口左上角开始计算的坐标(相对于电脑界面左上角而言)和客户区的宽度和高度。
geometry()提供的x()、y() 、width()、 height()函数表示客户区左上角开始计算的坐标和客户区的宽度和高度
frameGeometry()提供的x()、y() 、width()、 height()函数表示窗口左上角开始计算的坐标和窗口的宽度和高度
注意:提供三组坐标就是为了跨平台使用,由于不同平台的标题栏大小不同,以及注意每组坐标系统中的适用区域。

在编程中:
这里写图片描述
亲测,如果在show()调用之前调用的话数据是无效的。
因为在不同的平台中如果窗口还未显示出来我们则无法知道边框大小,只有将窗口显示出来后才能获取有效的坐标系统数据.

窗口部件大小、位置设置

QWidget提供了成员函数用来设置窗口组件的位置大小信息。
使用void resize(int w, int h)和void resize(const QSize&)来设置窗口宽度、高度(用户区的宽度和高度)。
使用void move(int w, int h)和void move(const QPoint&)函数和坐标位置(窗口左上角的坐标),当设置的宽度小于了操作系统最小宽度值时系统默认设为系统的最小值,不同的操作系统所规定的最小值不同。

QPushButton组件

QPushButton生成的对象在界面上呈现就是一个按钮。
QPushButton用于接受用户点击事件。
QPushButton能够显示提示性字符串,QLabel也有相同作用哦。
QPushButton是功能性组件,需要父组件作为容器。
QPushButton能够在父组件中定位。

综合代码片段:

1 QWidget w;//生成QWidget对象,作为顶级组件
2 QPushButton btn(&w);//将按钮对象放到容器里
3 btn.setText("Button");//给按钮设置显示的字符串
4 btn.move(10, 10);//移动按钮位置
5 btn.resize(100, 25);//设置按钮的宽度和高度

设置坐标为用户区左上角为起始位置的坐标。
可以生成多个QPushButton对象来创建多个按钮。
主窗口和用户区都是以相同的方向创建坐标。

posted on   一杯清酒邀明月  阅读(6020)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示