Eva*_*van 17 fonts qt locale windows-7 qt4.7
我正在使用Qt构建一个桌面应用程序,我的开发机器是使用日本语言环境赢得7 x64,标准系统字体是Meiryo.win 7 UI的大部分都是这种字体,虽然经典/旧程序如ui字体自定义窗口本身使用不同的字体,即MS UI Gothic.直到我发现QtCreator在一个地方用MS UI Gothic构建我的应用程序,而在另一个地方用Meiryo构建我的应用程序时,这并不会让我感到烦恼.例如,qlabels,qlineedits,qcombobox都使用MS UI Gothic,但后来添加的qtableview的自定义完成者使用Meiryo.
我在QtCreator的Designer中创建了大部分UI,并在代码中添加了完成者.如果我在The Designer中将所有小部件的字体更改为Meiryo,那么当然应用程序将使用Meiryo因此看起来正确,但在这种情况下我宁愿Qt自动选择任何系统的默认字体,因为win 7不会是唯一的平台我会用这个程序.
引起我更多关注的是QApplication :: font()返回MS UI Gothic,在我的情况下这是假的.当然,我可以使用QApplication :: setFont()来设置应用程序范围的字体,但这样就无法实现具有原生外观的完整目的,而无需微管理字体.
所以我的问题是,
我发现了一些澄清和事实
我希望我的应用程序为每个文本使用系统默认字体.
这个讨论说,无论你是否愿意,Designer都会添加字体信息.因此Qt将尊重此信息而不是系统默认字体.至少有人提到手动删除此信息应该在运行时使Qt选择系统默认字体.
在我的开发机器中,QApplication :: font()返回WRONG默认字体.但是我后来在代码中添加的QTableView如何使用RIGHT字体?它在哪里得到这个信息?
因此,如果我找到QTableView找到此信息的位置,我可以在main中获取它,并使用QApplication :: setFont()将其设置为app wide.然后剩下的是手动删除所有字体信息,然后HOPEFULLY它将工作.但这就像为什么我们首先使用Qt不是吗?
Bal*_*des 10
我可以想到两个可能的解决方案:
您可以将应用程序的字体打包为资源文件,这样所有平台都将使用该字体,而不管当前系统的默认字体.
QFont类有一个名为的方法defaultFamily()
.使用此功能,您可以手动设置整体的默认字体QApplication
.
一个例子(主要方法):
QApplication application(argc, argv);
QFont font;
font.setFamily(font.defaultFamily());
application.setFont(font);
...rest of your code...
Run Code Online (Sandbox Code Playgroud)
Qt的调用Windows的APISystemParametersInfo
来获取字体QMenu
,QMessageBox
等等,并使用GetStockObject
获得默认的系统字体。一些小部件具有与系统默认字体不同的特殊字体。我认为 Qt 做得对,但默认的日语/中文衬线字体在 HiDPI 显示器上看起来很糟糕。
只需使用QFont QApplication::font ( const char * className )
即可获得正确的字体(在您的情况下为 Meryo),例如qApp->setFont(QApplication::font("QMenu"))
归档时间: |
|
查看次数: |
23780 次 |
最近记录: |