技术专栏
Qt Pt转Px
Qt Pt转Px
界面开发时因为是在自己的电脑上,所以开发出来的效果看上去和自己预期的一样,但是发布出去后就不同了,不同的分辨率导致尺寸比例不同,会出现不协调的现象,想要解决这个问题就需要使用pt,但是设置的尺寸都是px,所以需要将pt转成Px.
在看代码前先了解几个概念:
pt (point,磅):
是一个物理长度单位,指的是72分之一英寸。
px (pixel,像素):
是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果px要换算成物理长度,需要指定精度DPI(Dots Per Inch,每英寸像素数),在扫描打印时一般都有DPI可选。Windows系统默认是96dpi,Apple系统默认是72dpi。
DPI(Dots Per Inch,每英寸点数):
是一个量度单位,用于点阵数码影像,指每一英寸长度中,取样、可显示或输出点的数目。
代码:
#ifndef PTFORPX_H
#define PTFORPX_H
#include <QApplication>
#include <QtGlobal>
#include <QScreen>
class PtForPx
{
public:
PtForPx(QApplication* App);
~PtForPx();
public:
static qreal dpiVal;
static qreal dpiValX;
static qreal dpiValY;
static int GetPxVal(int PtVal);
static int GetPxValX(int PtVal);
static int GetPxValY(int PtVal);
};
#endif // PTFORPX_H
#include "ptforpx.h"
qreal PtForPx::dpiVal;
qreal PtForPx::dpiValX;
qreal PtForPx::dpiValY;
PtForPx::PtForPx(QApplication* App)
{
QScreen *screen = App->primaryScreen();
dpiVal = screen->logicalDotsPerInch();
dpiValX = screen->logicalDotsPerInchX();
dpiValY = screen->logicalDotsPerInchY();
}
PtForPx::~PtForPx()
{
}
int PtForPx::GetPxVal(int PtVal)
{
int Pixel = dpiVal * PtVal / 72;
return Pixel;
}
int PtForPx::GetPxValX(int PtVal)
{
int Pixel = dpiValX * PtVal / 72;
return Pixel;
}
int PtForPx::GetPxValY(int PtVal)
{
int Pixel = dpiValY * PtVal / 72;
return Pixel;
}
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包
36
7
评论
打赏
- 分享
- 举报
评论
0个
手气红包
暂无数据
相关专栏
-
2024-01-03 22:05:50
-
2023-01-04 15:09:58
-
浏览量:4824次2021-12-11 15:15:29
-
浏览量:5372次2022-03-03 09:00:09
-
浏览量:2015次2023-04-19 09:11:52
-
浏览量:2433次2022-12-08 23:43:55
-
浏览量:45933次2019-07-25 11:31:42
-
浏览量:12278次2020-12-02 22:49:48
-
2024-01-22 16:01:53
-
浏览量:3782次2020-08-21 19:40:26
-
浏览量:2607次2019-12-05 16:39:49
-
浏览量:2688次2020-04-24 17:44:09
-
浏览量:5171次2017-11-16 11:35:44
-
浏览量:10405次2020-11-24 23:10:14
-
浏览量:4785次2017-10-30 11:12:34
-
浏览量:1958次2020-08-22 16:10:10
-
浏览量:2916次2017-12-27 13:40:31
-
浏览量:3368次2020-08-18 20:09:59
-
浏览量:2289次2020-06-05 10:56:54
置顶时间设置
结束时间
删除原因
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
打赏作者
小王子🤴
您的支持将鼓励我继续创作!
打赏金额:
¥1
¥5
¥10
¥50
¥100
支付方式:
微信支付
打赏成功!
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
审核成功
发布时间设置
发布时间:
请选择发布时间设置
是否关联周任务-专栏模块
审核失败
失败原因
请选择失败原因
备注
请输入备注