软件自己指定显示字体才能做到可控,设置全局字体:
QFont font; font.setFamily("MS Shell Dlg 2"); // Tahoma 宋体 qApp->setFont(font);
检测全局字体:
qDebug() << qApp->font().rawName(); qDebug() << qApp->font().family(); qDebug() << qApp->font().defaultFamily(); qDebug() << qApp->font().styleName(); qDebug() << qApp->font().toString(); qDebug() << qApp->font().key();
输出结果(QT的默认字体居然是MS Shell Dlg 2):
"unknown"
"MS Shell Dlg 2"
"Arial"
""
"MS Shell Dlg 2,8.25,-1,5,50,0,0,0,0,0"
"MS Shell Dlg 2,8.25,-1,5,50,0,0,0,0,0"
---------------------------------------------------------------------
另外还可把字体作为资源文件携带,然后再使用,比方说我觉得微软雅黑就不错:
//将字体文件名传给addApplicationFont,得到字体的Id
int fontId = QFontDatabase::addApplicationFont("./res/msyh.ttf");
//将字体Id传给applicationFontFamilies,得到一个QStringList,其中的第一个元素为新添加字体的family
QString msyh = QFontDatabase::applicationFontFamilies ( fontId ).at(0);
QFont font(msyh,10);
//将此字体设为QApplication的默认字体
QApplication::setFont(font);