Qt高分屏适配和QSS单位

启用高分屏适配

#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif

QApplication设置上述属性后,qt会自动根据当前系统缩放比例进行调整。Win10缩放设置
但是该属性调整的只有px指定的值。
例如:

#labelPt
{
font-size:9pt;
}
#labelPx
{
font-size:12px;
}

在上述两种qss代码中,labelPt指定的字体大小是ptlabelPx指定的字体大小是px。当系统缩放设置是100%的时候这两种表述并没有什么区别。但是当系统缩放设置改变之后,labelPx的大小会随之发生改变,而labelPt则不会。这是因为px代表的是像素数,而pt代表的是点大小,然而系统缩放设置所针对的就是px像素值。即当系统缩放设置为200%的时候,系统会直接使用4个像素点来显示一个像素。而pt所表示的则是物理尺寸,通过以下方法换算。

1pt=0.376毫米=1.07英美点=0.0148英尺=0.1776英寸。

即在一般的显示器上,所有显示器pt所指代的大小都是固定的,这各值是可以用尺子量出来的。
另外一个意思就是pt本身就是随着显示器dpi进行缩放的。而px不是。

实际应用

综上所述。在实际写程序的过程中,单位一定要统一。如果使用pt就所有的尺寸都使用pt表示。如果使用px就统一使用px。
这样具有更好的兼容性。

补充:qss单位

  • pt:上面讲过,点大小。具体尺寸会随屏幕dpi进行改变。
  • px:像素大小,会随系统缩放设置进行改变。
  • em:字符M所对应的宽度,会随控件font-sizefont-family属性改变。基本上是一个汉字的宽度
  • ex:字符X的高度,同样会随控件fong-sizefont-family属性改变。
  • %:百分比,QT支持,但是一直没搞明白它是相对于谁的百分比。也一直没用过。

实战

提供一下qss代码,各位可以试试效果。

QLabel
{
font-size:9pt;			//字体大小9个点
padding-left:1em;		//左padding 1个M字符的宽度,
padding-right:1em;
padding-top:0.4em;		//距离顶部0.4个汉字的宽度
padding-bottom:0.4em;
}
/***********************************/
QLabel
{
font-size:12px;
padding-left:6px;
padding-right:6px;
padding-top:3px;
padding-botton:3px;
}
/***********************************/
QLabel
{
font-size:12px;
padding-left:1em;
padding-right:1em;
padding-top:0.4ex;
padding-bottom:0.4ex;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值