• QT 5.1.2中英文切换


    懒得扯了,直接上正文

    1.新建语言切换QT项目

     

    我的项目是带动态ui的

    2.在pro配置中英文切换的ts文件 

     

    TRANSLATIONS += lanague_cn.ts lanague_en.ts

    3.布局,两种模式,一种是直接一个按钮切换,一个是使用单独按钮切换单独语言

     4.记得第三步保存布局,然后打开QT自带的命令窗口

     

    5.输入命令生成ts文件:(pro地址为你项目地址)

     lupdate F:\QtApplition\ChineseEnglishSwitch\ChineseEnglishSwitch.pro

     

     6.查看一下ts文件内容,可以直接把ts给拉到qt或者使用文件查看

     

    此时的ts文件都是最原始的文件,它只有布局的文字显示

    7.此时有两种方式去改变ts:

            (1).直接修改ts文件,把<translation>标签里面的空内容替换成你想替换的语音

            (2).通过QT自带的软件去做:Linguist 5.12.2 (MinGW 7.3.0 64-bit)

    先看第一种:把ts文件拽进QT,然后直接更改标签的内容:

     

    注意这个窗口,因为程序导出ts默认是MainWindow,我直接改成中文的"窗口"

     第二种方式:使用QT自带的软件修改:

     

    导入ts文件:

     

     

     

    打开的是这种的情况,然后点击挨个内容去修改你所需翻译的内容:

    比如我需要修改测试为test:

     

    先在英文框输入test,然后上面的两个问号点击确认,然后根据这种方式一一更改其内容,保存:

     

    8.根据第七步修改完成的ts文件,我们继续使用第七步里面使用的QT软件生成所需切换语言的qm文件 ,我直接修改完两个ts文件,所以我这里直接发布全部,你们也可以一个一个操作

    9.在项目导入我们所需使用的qm资源 

     先创建一个资源qrc

     导入文件:右键点击language.qrc添加现有文件

     

    此时前期的准备工作就完成了,接下来我们使用代码来切换语言

    10.我直接上代码吧,有什么不懂的可以评论或者找我私聊 

    1. #ifndef MAINWINDOW_H
    2. #define MAINWINDOW_H
    3. #include
    4. #include
    5. namespace Ui {
    6. class MainWindow;
    7. }
    8. class MainWindow : public QMainWindow
    9. {
    10. Q_OBJECT
    11. public:
    12. explicit MainWindow(QWidget *parent = nullptr);
    13. ~MainWindow();
    14. private slots:
    15. void on_pushButton_clicked();
    16. void on_pushButton_2_clicked();
    17. void on_pushButton_3_clicked();
    18. private:
    19. Ui::MainWindow *ui;
    20. void Languageloading(bool type);
    21. QTranslator m_translator;
    22. };
    23. #endif // MAINWINDOW_H
    1. #include "mainwindow.h"
    2. #include "ui_mainwindow.h"
    3. #include "QtDebug"
    4. MainWindow::MainWindow(QWidget *parent) :
    5. QMainWindow(parent),
    6. ui(new Ui::MainWindow)
    7. {
    8. ui->setupUi(this);
    9. Languageloading(false);
    10. }
    11. MainWindow::~MainWindow()
    12. {
    13. delete ui;
    14. }
    15. void MainWindow::on_pushButton_clicked()
    16. {
    17. Languageloading(true);
    18. }
    19. void MainWindow::on_pushButton_2_clicked()
    20. {
    21. Languageloading(false);
    22. }
    23. void MainWindow::Languageloading(bool type)
    24. {
    25. qDebug() << "type:" << type;
    26. switch (type)
    27. {
    28. case true:
    29. m_translator.load(":/lanague_cn.qm");
    30. break;
    31. case false:
    32. m_translator.load(":/lanague_en.qm");
    33. break;
    34. default:
    35. break;
    36. }
    37. qApp->installTranslator(&m_translator);
    38. setWindowTitle(tr("窗口"));
    39. ui->label->setText(tr("测试"));
    40. ui->pushButton_2->setText(tr("英文"));
    41. ui->pushButton->setText(tr("中文"));
    42. ui->pushButton_3->setText(tr("切换"));
    43. }
    44. bool bres = false;
    45. void MainWindow::on_pushButton_3_clicked()
    46. {
    47. bres = !bres;
    48. Languageloading(bres);
    49. }

    这里的重点在我设置setText(tr()),如果不做这个操作,语言切换会失效,注意的是,tr里面的内容是你ts文件里面的source标签里面的内容,必须一毛一样

    11.切换效果 

     

  • 相关阅读:
    微服务全链路灰度新能力
    sql:SQL优化知识点记录(十一)
    “AURORA-M:首个遵循人类审查安全指令微调的开源多语言模型
    Eclipse - Text Editors (文本编辑器)
    激光雷达市场格局“剧变”,这家国产厂商成了最大黑马?
    复杂数据没头绪?
    国外操作系统
    Linux之bash常用命令
    持续集成交付CICD:Jenkins Pipeline与远程构建触发器
    疫情之下,企业如何才能高效的进行异地协同办公?
  • 原文地址:https://blog.csdn.net/qq_36333309/article/details/127101971