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

前端之家收集整理的这篇文章主要介绍了如何在Qt中获取系统默认字体设置?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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...
原文链接:https://www.f2er.com/windows/371203.html

猜你在找的Windows相关文章