解决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 设置字体 字号等格式属性

#ifndef FONTSET_H #define FONTSET_H #include class FontSet : public QMainWindow {     Q_OB...

Qt 让QLabel自适应text的大小,并且自动换行

1. 让QLabel自适应text的大小,直接用下面的代码: LabelName->adjustSize(); 2. 让QLabel能够自动判断并换行显示: LabelName->s...

Qt设置全局文字大小

#include #include "pictracking.h" #include int main(int argc, char *argv[]) { QApplicat...

在Qt中计算文本的宽度~

在Qt中计算文本的宽度~   2010-11-18 17:06:05|  分类: Qt links |  标签: |字号大中小 订阅 在写一些需要精确布局或者排版的软件时候,我们需要知道文本...
  • wzwind
  • wzwind
  • 2011年09月21日 22:17
  • 2761

QT控件自适应缩放以及自适应系统字体与分辨率

研究了一天,在网上查了好多关于QT控件如何自适应系统字体的方法,后来在一本Linux环境下QT4图形界面与MySQL编程书中查到,通过布局管理器可以实现窗口尺寸改变时自动调整控件。 QT布局管理器有...

QT应用程序分辨率自适应

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

Qt如何支持高分辨率屏幕(高分屏)

Qt从5.6.0开始,支持High-DPI。 int main(int argc, char *argv[]) { #if (QT_VERSION >= QT_VERSION_CHECK(5, 6, ...

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

void FitWindow::resetUI(QWidget *pWidget) { if(!pWidget){ return; } QDesktopWid...

Qt 中获取字体的像素高度和宽度

最近在用Qt做文字的滚屏效果,要计算字体的像素高度和像素宽度,用到以下几个函数: 1. QLabel::fontMetrics().width(QString s): 获取字符串s的总像素宽度。int...

关于不同版本qt上字体问题的解决方案

关于移植qt字体问题的解决方案.(4.8.2的qt版本+800x600的显示分辨率) 1:经过arm-linux平台上实验论证qt4.8版本不支持ttf字体(也许本人能力有限还存在某些编译时的参数问...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决qt在相同分辨率不同宽度的屏幕下字体显示位置不一样的问题
举报原因:
原因补充:

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