Qt中实现按键切换中英文

1.在.pro文件中添加

TRANSLATIONS = \

qt_cn.ts \ # 中文

qt_en.ts # 英文

2.ui中拖入控件,编译保存一下Qt中实现按键切换中英文_第1张图片

3.右键工程,添加现有文件

Qt中实现按键切换中英文_第2张图片

4.加载翻译

 //配置翻译
QString name =  "E:/mywork/Device/";
QTranslator ch;
QTranslator en;

ch.load(name + "qt_cn.qm");
en.load(name + "qt_en.qm");

5.点击工具-外部-Qt语言家-更新翻译

Qt中实现按键切换中英文_第3张图片

6.选择中文的,用...打开,选择Qt Linguist

Qt中实现按键切换中英文_第4张图片

7.打开后直接默认确定

Qt中实现按键切换中英文_第5张图片

8.中文的直接就复制中文的进来,按照123步骤,保存后关闭

Qt中实现按键切换中英文_第6张图片

9.点击英文的,步骤同上,改成自己需要翻译成的东西,注意如果和原来格式不一样会有警告,比如多了一个空格

Qt中实现按键切换中英文_第7张图片

 10.关闭后点击工具-外部-Qt语言家-发布翻译

Qt中实现按键切换中英文_第8张图片

 11.两个按键分别控制切换中英文

void MainWindow::on_pushButton_clicked()
{
    qApp->installTranslator(&ch);
     ui->retranslateUi(this);
}

void MainWindow::on_pushButton_2_clicked()
{
    qApp->installTranslator(&en);
      ui->retranslateUi(this);
}

12.运行结果

中文:

Qt中实现按键切换中英文_第9张图片

英文:

Qt中实现按键切换中英文_第10张图片

13.注意的点

1.以上方法只适用于ui里面的控件,如果是用代码生成的则无效,如果想让代码生成的也生效的话只需要在设置字符串的时候加上tr后,保存文件,然后重复5 6步骤去修改

例:

QMessageBox::information(nullptr,tr("DigisynLink"),tr("确定重启设备?"));
QPushButton *bt = new QPushButton();
                  bt->setText(tr("你好"));
2.在执行ui->retranslateUi(this);之后会将原本setText的文本清空了,如果不希望被清空需要重新设置数据
 ui->label->setText(tr("测试"));

Qt中实现按键切换中英文_第11张图片

 如果不重新设置则会清空

Qt中实现按键切换中英文_第12张图片

 重新设置后即可正常实现

void MainWindow::on_pushButton_clicked()
{
    qApp->installTranslator(&ch);
    ui->retranslateUi(this);
    ui->label->setText(tr("测试"));
}

void MainWindow::on_pushButton_2_clicked()
{
    qApp->installTranslator(&en);
    ui->retranslateUi(this);
    ui->label->setText(tr("测试"));
}

Qt中实现按键切换中英文_第13张图片

3.如果在mainwindow下使用了QStackWidget来创建多个界面,并且每个界面是分离出来管理的,以上步骤只能替换当前界面的中英文,如果想要实现全部替换,需要在每个页面里面重写event方法
bool MainWindow::event(QEvent *event)
{
    if(event->type() == QEvent::LanguageChange)
    {
         ui->retranslateUi(this);  // 更新界面的翻译 
    }
    return QWidget::event(event);
}

你可能感兴趣的:(Qt,qt,开发语言)