本文主要是介绍Qt中window frame的影响,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
window frame
在创建图形化界面的时候,会创建窗口主体,上面会多出一条,周围多次一圈细边,这就叫window frame
窗口框架,这是操作系统自带的。
这个对geometry
的一些属性有一定影响,主要体现在Qt坐标系体系:
窗口当中包含一个按钮,这个按钮的坐标系是以父元素为参考,那么这个参考是widget
本体作为参考,还是window frame
作为参考,这两种参考体系都存在
在Qt中提供了很多API,有的是以Widget
本体左上角作为原点(不考虑window frame),有的是以window frame左上角作为原点。
geometry()
和setGeometry()
都是不参考window frame的
frameGeometry()
和setFrameGeometry()
考虑window frame
相关API
API | 说明 |
---|---|
x() | 获取横坐标计 算时包含 window frame |
y() | 获取纵坐标计 算时包含 window frame |
pos() | 返回 QPoint 对象, ⾥⾯包含 x(), y(), setX(), setY() 等⽅法. 计算时包含 window frame |
frameSize() | 返回 QSize 对象, ⾥⾯包含 width(), height(), setWidth(), setHeight() 等⽅法 计算时包含 window frame |
frameGeometry() | 返回 QRect 对象. QRect 相当于 QPoint 和 QSize 的结合体. 可以获取 x, y,width, size 计算时包含 window frame 对象. |
width() | 获取宽度 计算时不包含 window frame |
height() | 获取⾼度 计算时不包含 window frame |
size() | 返回 QSize 对象, ⾥⾯包含 width(), height(), setWidth(), setHeight() 等方法 计算时不包含 window frame |
rect() | 返回 QRect 对象. QRect 相当于 QPoint 和 QSize 的结合体. 可以获取并设置 x,y, width, size. 计算时不包含 window frame 对象 |
geometry() | 返回 QRect 对象. QRect 相当于 QPoint 和 QSize 的结合体. 可以获取 x, y,width, size. 计算时不包含 window frame 对象 |
setGeometry() | 直接设置窗⼝的位置和尺⼨. 可以设置 x, y, width, height, 或者 QRect 对象 计算时不包含 window frame 对象. |
这么多API,其实只需要有
frameGeometry
和geometry
,就足够完成所有需求了
示例演示
这里测试发现,frameGeometry
和 geometry
的结果一样,这是因为当前代码是放到了构造函数当中的,此时的Widget对象正在构造,还没有加入到window frame当中,所有此时还看不到window frame的影响
#include "widget.h"
#include "ui_widget.h"
#include<QDebug>
#include<QPushButton>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// QRect rect1 = this->geometry();
// QRect rect2 = this->frameGeometry();
// qDebug() << "rect1:" << rect1;
// qDebug() << "rect2:" << rect2;QPushButton *button = new QPushButton(this);button->setText("按钮");button->move(100,100);connect(button, &QPushButton::clicked, this, &Widget::handle);
}Widget::~Widget()
{delete ui;
}void Widget::handle()
{QRect rect1 = this->geometry();QRect rect2 = this->frameGeometry();qDebug() << "rect1:" << rect1;qDebug() << "rect2:" << rect2;
}
这篇关于Qt中window frame的影响的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!