直到我发现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...