在使用qt的国际化功能时一直出现汉化不完全的现象,比如主窗口的文字都是汉化的,但打开一个子窗口却发现文字是英文的,本来应该被汉化的字符串却没有被汉化(注:翻译qm文件已经生成)。一直都不明白是怎么回事,在csdn也发了几次帖子,但也都没有实质性的解决问题,后来在qt官方论坛发了两个帖子,最终在一个老外的指点下发现了问题的根源,现在将这个问题记录于此,希望对和我一样对qt理解不够深入的人有所帮助。

我出现问题的代码是这样的:

    QTranslator trans;
    trans.load("gui_zh");
    switch(index)
    {
    case 0: //English
        QApplication::removeTranslator(&trans);
        ui->retranslateUi(this);
        break;
    case 1: //Chinese
        QApplication::installTranslator(&trans);
        ui->retranslateUi(this);
        break;
    default:
        break;
    }

在一个函数里面调用QApplication::installTranslator(&trans);    和  QApplication::removeTranslator(&trans);   对翻译文件进行安装和删除,由于这段代码是从项目原有开发人员的手里接过来的,我也就没有怀疑其正确性,也就一直在项目中沿用这种写法。

老外告诉我,QApplication::installTranslator(&trans);  这个函数需要在类的构造函数中写,而不能在生成窗体后再使用,他让我回头去看相关的文档,里面有介绍,但我找了一圈也没找到哪里有说需要在构造函数中调用

下面是经过更改后的代码,像这样就能正常的对所有的需要翻译的字符串进行翻译了:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QApplication::instance()->installTranslator(&translator);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_E_clicked()
{
    translator.load(":/language/English.qm");
}

void MainWindow::on_pushButton_C_clicked()
{
    translator.load(":/language/Chinese.qm");
}

void MainWindow::on_pushButton_clicked()
{
    QFileDialog::getOpenFileName(this, MainWindow::tr("open"), "/", "*.c");
}

void MainWindow::changeEvent(QEvent *e)
{
    if(e->type() == QEvent::LanguageChange)
    {
        ui->retranslateUi(this);
    }

QMainWindow::changeEvent(e);
}

在构造函数中安装翻译器,在其他函数中对翻译器加载的文件进行修改(中文或者英文),在事件函数changeEvent(QEvent *e)中进行重新翻译ui->retranslateUi(this);

示例代码:http://pan.baidu.com/s/1qWo9Kew

Qt国际化出错导致汉化不完全相关推荐

  1. 路漫漫其修远兮--汉化新人容易犯的几个毛病

    新世纪,越来越多的汉化用户,加入汉化者的行列.汉化新世纪也应大家的要求,对新汉化人的作品进行测试,既保证我们网站发布作品的质量,也可以及时发现汉化问题,为汉化新人提供一些技术帮助.在测试过程中,发现新 ...

  2. PS朋友们有福了 PhotoShop CS2 最新汉化补丁出炉

    PS朋友们有福了 PhotoShop CS2 最新汉化补丁出炉 使用PS一族的朋友们 由于CS2版本出来后一直沿用CS汉化补丁 导致汉化不完全 官方中文版又遥遥无期 今天终于发现有朋友给作了一个针对C ...

  3. topaz gigapixel ai 5.4.5汉化补丁使用教程

    topaz gigapixel ai5.4.5汉化补丁是专为同名软件所制作的一款汉化工具,由吾爱破解论坛所分享,打开汉化文件会自动释放解压文件到对应软件的qmlcache目录,此时便已经将所有界面语言 ...

  4. 【软件开发】Eclipse开发工具的介绍、安装及汉化

    Eclipse开发工具的介绍和安装 一.Eclipse的介绍 二.Eclipse的安装 1. 下载Eclipse 2. 运行Eclipse 3. 安装Eclipse的中文语言包 4. Eclipse的 ...

  5. 数独程序 Hodoku 的汉化

    1 汉化基于hodoku sf的官方版本 2 我修改了导致汉化的一些小bug 3 图片如下 4 git如下 https://git.oschina.net/anzhuangguai/hodoku.gi ...

  6. TortoiseGit小乌龟无法汉化的问题

    TortoiseGit(Git小乌龟无法汉化的问题) 今天启动Git小乌龟时出现了Git小乌龟更新的提示,本着码农应该时刻保持最新动态的思想直接点击了确认更新,这一更新完之后出问题了,汉化包不能使用了 ...

  7. win10+anaconda环境下pyqt5+qt tools+eric6.18安装及汉化过程

    最近需要用python编写一个小程序的界面,选择了pyqt5+eric6的配套组合,安装过程中遇到一些坑,特此记录.参考书籍是电子工业出版社的<PyQt5快速开发与实战>. 因为我使用an ...

  8. Qt汉化QColorDialog窗口

    1.找到本地Qt安装目录下的qt_zh_CN.qm文件,我们拷贝一份出来放在别的路径下进行操作,仅供我们当前的程序使用.文件参考位置:D:\Qt\5.15.2\msvc2019_64\translat ...

  9. PyQt5随笔:Qt Designer的汉化(包括汉化包)

    1.前言 安装PyQt5 原带的 Designer 图形化设计界面是英文的,对英文不好之人多有不便.但在网上找到的教程都不符合我这个版本的操作流程,例如找不到一些对应文件夹.不过汉化包还是有用的.英文 ...

最新文章

  1. Go 学习笔记(49)— Go 标准库之 io/ioutil(读写文件、获取目录下的文件和子目录、创建临时目录和文件)
  2. 【Git】Git 基础命令 ( Git 版本库概念 | 创建版本库 git init | 克隆版本库 git clone )
  3. 104_鼠标事件对象
  4. nginx_upsteam
  5. no protocol specified
  6. WARNING:Your password has expired --linux 用户密码过期
  7. javaone_JavaOne 2012:非阻塞数据结构如何工作?
  8. 11单件模式(Singleton Pattern)
  9. sqoop(数据迁移工具)-安装-学习
  10. 学术会议 | 中国杭州举办——第21届国际语义网大会​ISWC2022 Call for Papers
  11. Java的简单了解。
  12. 红石科技机器人_《机器人殖民地》—游戏简评
  13. 20120918-LIST类定义《数据结构与算法分析》
  14. 错误的参数个数或无效的参数属性值_数据处理-利用 python进行异常值分析
  15. 软件测试环境有几种,什么是软件测试环境_软件测试环境有哪几种_做软件测试要用到什么工具...
  16. GSCOOLINK GSV2006替CH6002 HDMI2.0接口芯片
  17. 详谈软件工程之软件开发方法
  18. 一张图回顾Hadoop十年 Hadoop老矣,尚能饭否
  19. 【EXLIBRIS】#小词旮旯# 000 初衷
  20. 树莓派 python 驱动 lcd tft spi 2.8寸 ili9341 240x320

热门文章

  1. macOS打开Excel镜像翻转问题
  2. P4961 小埋与扫雷
  3. win7停服安全解决方案--win7系统加固
  4. CAD2021安装完成后,打开弹出白框
  5. English improvement of IT Test(2012)
  6. 树莓派人脸/ic卡识别门禁系统
  7. 赤裸裸的统计学:除去大数据的枯燥外衣,呈现真实的数字之美 - 电子书下载 -(百度网盘 高清版PDF格式)...
  8. 关键帧提取——帧差法提取关键帧(2)
  9. 简易方法制作GIF图(mp4转GIF)
  10. 你想不到,韩国女团最喜欢的英文单词是这些