解决qt在相同分辨率不同宽度的屏幕下字体显示位置不一样的问题

原创 2017年06月05日 09:59:14

使用qlabel给Qwidget做标题,在分辨率为1920*1080的笔记本显示器上看到label标题在窗口中居中,换了一台分辨率也是1920*1080但更宽和更大的台式机显示器后,此label上的标题在窗口中变得偏左且字体看起来小。同样的显示器不同宽度的屏幕字体大小显示不一样造成标题没有居中。因字体和内容都是在qt设计师上设定的,qt设计师设定的字体是根据point(磅)大小来显示而不是像素大小显示,即获取字体大小的函数是PointSize(),而不是Pixsize()。网上说根据像素大小显示的字体在相同分辨率下显示行为是一样,但是根据point大小显示的字体, 规定了实际中我们肉眼看到的字体的大小 他和pixel无关的~ 他和显示器无关  不管在什么样上的显示器上 规定大小是多少就是多少。因此如果要使字体与显示器相关,则必须将字体改为按像素大小设置。根据此处计算方法,http://blog.csdn.net/liuqz2009/article/details/7208931

先获取pointsize大小,再转换为像素大小。

int pointsize = m_font.pointSize();
m_font.setPixelSize(pointsize*90/72); //设置字体大小单位为像素大小,而不是以磅为单位


如何决定字体是按pointsize大小还是按pixsize大小?

函数PointSize()的返回值为如果字体是以SetPointSize()设置的,则返回具体的pointsize,否则返回-1. pixsize也是如此,因此判断下是否返回-1即可知道是哪个方式设置。


改了像素大小后,标题依然没有居中。后面各种方法尝试都不行。后面突然想到一法,将label的宽度设置为与窗口大小一样的宽度,再设置label的内容为居中setAlignment(Qt::AlignHCenter),如此则放到不同的显示器,能够自动适应窗口大小。至此解决了标题不居中问题。特此记录一下。

QT控件中布局QLabel让其自适应大小自动换行遇到的问题

使用QLabel的时候总会有一些小问题,这里记录一下,如果您有更好的解决办法请告诉我一下,3Q。 给QWidget控件添加边框同时不影响其子控件QLabel:分别设置widget控件和label控件...
  • Enter_
  • Enter_
  • 2016-01-22 19:29:12
  • 5409

Qt中根据pc屏幕分辨率按比例修改窗口的大小

void FitWindow::resetUI(QWidget *pWidget) { if(!pWidget){ return; } QDesktopWid...
  • qq_27175513
  • qq_27175513
  • 2016-06-23 11:37:03
  • 2558

QML怎么适配不同的设备

前言做嵌入式和移动开发,不同的设备,不同的分辨率需要UI能够适配,这是一个很现实的问题。QML作为Qt中为UI而生的,使用QML一定要解决适配的问题。分辨率现在同一尺寸的屏幕,其分辨率也是不同,在QM...
  • zhx6044
  • zhx6044
  • 2015-03-10 20:59:03
  • 4154

QT应用程序分辨率自适应

QT应用程序分辨率自适应一、应用程序分辨率自适应    为了满足应用程序能在不同尺寸及分辨率的屏幕下能够正常的运行显示,就需要对不同的分辨率进行自适应,而且应用程序分辨率自适应的问题在应用UI设计布局...
  • matengxiao
  • matengxiao
  • 2016-10-18 21:57:12
  • 8138

Qt Quick 准确的移动平台屏幕适配

网上大多数都是那一套公式,不适合拉伸布局,假如有一张图片或者一个被固定了大小的控件或图片,那么可能会失真,下面是自己实现的自适应,非常好用的说。而且网上大多数Qt quick开发群心高气傲,根本不要人...
  • A289672082
  • A289672082
  • 2016-06-07 12:21:11
  • 2634

QML获取屏幕分辨率大小

width: Screen.desktopAvailableWidth height: Screen.desktopAvailableHeight
  • robertkun
  • robertkun
  • 2014-12-19 09:07:28
  • 4345

QML多分辨率屏幕适配

width: Qt.platform.os == "windows" || Qt.platform.os == "osx" ? defaultW : Screen.desktopAvailableW...
  • nnngo
  • nnngo
  • 2017-03-22 01:16:21
  • 587

QML 中的屏幕适配问题

QML 中的屏幕适配问题
  • qyvlik
  • qyvlik
  • 2016-04-25 12:50:01
  • 4108

High-DPI Support in QT

High-DPI Support in QT 一、qt 从5.4版本开始支持高DPI,开启高DPI支持的方法是通过配置环境变量 1,添加环境变量 QT_DEVICE_PIXEL_RATIO = aut...
  • boo12355
  • boo12355
  • 2016-08-16 16:07:10
  • 2339
收藏助手
不良信息举报
您举报文章:解决qt在相同分辨率不同宽度的屏幕下字体显示位置不一样的问题
举报原因:
原因补充:

(最多只允许输入30个字)