Qt 中的中英文混排

在安装了东亚字体的英文操作系统中,当Qt显示中英文混排时,无法让英文显示英文字体,中文显示中文字体。解决办法是在Qt中将中文字体设置系统缺省字体。

以windows操作系统为例,创建窗口前先运行下面代码:

 

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QFont font;
    QFontDatabase fontDatabase;
#if QT_VERSION < 0x050000
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
#endif
    if (fontDatabase.families().contains("宋体") && font.defaultFamily() != "宋体") {
        font.setFamily("宋体");
        font.setPointSize(9);
        app.setFont(font);
    }
    app.setStyleSheet("QPushButton {font-family: arial,sans-serif;}");
    // start mainwindow
}

 这样不管是中文还是英文缺省都会用宋体显示,接下来可以给每个含有英文的控件设置qss就可以更改英文字体,中文部分不变。



 可以看其实并不完美,英文显得比中文大。在native 程序中英文其实比中文小一号。

你可能感兴趣的:(qt)