加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

如何在Qt中获取系统默认字体设置?

发布时间:2020-12-13 20:13:23 所属栏目:Windows 来源:网络整理
导读:我正在使用Qt构建一个桌面应用程序,我的开发机器是日本语言环境的7 x64,标准系统字体是 Meiryo.大多数win 7 UI是这种字体,虽然经典/较旧的程序,如ui字体定制窗口本身使用不同字体是MS UI哥特式. 直到我发现QtCreator在一个地方用MS UI哥特式构建我的应用程序
我正在使用Qt构建一个桌面应用程序,我的开发机器是日本语言环境的7 x64,标准系统字体是 Meiryo.大多数win 7 UI是这种字体,虽然经典/较旧的程序,如ui字体定制窗口本身使用不同字体是MS UI哥特式.
直到我发现QtCreator在一个地方用MS UI哥特式构建我的应用程序,而Meiryo在另一个地方,这并不打扰我.例如,qlabel,qlineedits,qcombobox都使用MS UI哥特式,但是使用qtableview的自定义完成我稍后添加使用Meiryo.

我在QtCreator的设计器中制作了大部分的UI,而在代码中添加了完整的UI.如果我在设计器中将所有小部件的字体更改为Meiryo,那么应用程序当然会使用Meiryo看起来正确,但在这种情况下,我宁愿Qt为我自动选择任何系统的默认字体,因为win 7不会是唯一的平台我将使用这个程序.

更重要的是QApplication :: font()返回MS UI哥特式,这在我的情况下是错误的.当然,我可以使用QApplication :: setFont()设置应用程序的字体,但是它的整体目的就是让原始的外观看起来没有显示字体.

所以我的问题是

> Qt如何确定系统默认字体,
>如果这是一个Qt Bug我该怎么办?
>我应该如何使用.ui文件,仍然有我的UI在运行时使用默认系统字体?

我发现的一些澄清和事实

>我希望我的应用程序为每个文本使用系统默认字体.
> This discussion说,设计师会添加字体信息,无论你是否想要它.所以Qt会尊重这个信息,而不是系统默认的字体.至少有人提到手动删除此信息应该使Qt在运行时选择系统默认字体.
>在我的开发机器QApplication :: font()中返回WRONG默认字体.但是如何来一个QTableView我稍后在代码中添加使用RIGHT字体?它在哪里得到这个信息?

所以,如果我发现QTableView找到这个信息的地方,我可以在main中找到它,并用QApplication :: setFont()将其设置为应用程序.那么剩下的是手动删除所有的字体信息,然后HOPEFULLY它将工作.但是这就是为什么我们使用Qt在第一位不是吗?

我可以想到两个可能的解决方案:

>您可以使用应用程序将字体打包为资源文件,这样所有平台都将使用该字体,而不管当前系统的默认字体.
> QFont类有一个名为defaultFamily()的方法.使用它可以手动设置整个QApplication的默认字体.

一个例子(主要方法):

QApplication application(argc,argv);
QFont font;
font.setFamily(font.defaultFamily());
application.setFont(font);
...rest of your code...

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读