关于Qt国际化的学习
step1:在工程文件中添加 TRANSLATIONS +=ui_zh.ts/ ui_en.ts/
然后使用Tools下的Qt语言家lupdate生成 ts文件
step2:打开Qt语言家,打开ts文件,对里面的文本进行逐个手动翻译,并保存。
返回Qt,使用Tools下Qt预言家的lrelease生成qm文件
step3:为了使得子窗口能收到主窗口的改变语言的信号,子窗口应该先new出来,
如果使用combo_box实现语言切换,需要对box发出的信号进行处理
connect(ui->combo_box1,SIGNAL(currentIndexChanged(int)),this,SLOT(slot_changelanguage(int)))
然后再写一下slot函数:
void MainWindow::slot_changelanguage(int index)
{
//index是combo box的item的序号,比如第一个选项是中文,第二个选项是英文
Qtranslator trans;
bool b=false;
switch(index)
{
case 0:
{
emit changedialog(0);
b=trans.load("中文语言包的地址");
if(b) {qAPP->installtranslator(&trans); this->ui->retranslateUi(this);}
else {qDebug()<<"加载中文语言包失败"}
}break;
case 1:
{
同理
}break;
}
}
step4:声明changedialog(int)这个信号,在主窗口的构造函数中connect该信号和各个dialog的slot函数,该slot函数用于接收信号传来的int值,
然后与主窗口中的slot函数类似,进行加载语言包
参考资料:
https://blog.csdn.net/hebbely/article/details/69388763
https://blog.csdn.net/Stephen_jie/article/details/53048556?utm_medium=distribute.pc_relevant_download.none-task-blog-blogcommendfrombaidu-6.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-blogcommendfrombaidu-6.nonecas