Qt国际化出错导致汉化不完全
在使用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国际化出错导致汉化不完全相关推荐
- 路漫漫其修远兮--汉化新人容易犯的几个毛病
新世纪,越来越多的汉化用户,加入汉化者的行列.汉化新世纪也应大家的要求,对新汉化人的作品进行测试,既保证我们网站发布作品的质量,也可以及时发现汉化问题,为汉化新人提供一些技术帮助.在测试过程中,发现新 ...
- PS朋友们有福了 PhotoShop CS2 最新汉化补丁出炉
PS朋友们有福了 PhotoShop CS2 最新汉化补丁出炉 使用PS一族的朋友们 由于CS2版本出来后一直沿用CS汉化补丁 导致汉化不完全 官方中文版又遥遥无期 今天终于发现有朋友给作了一个针对C ...
- topaz gigapixel ai 5.4.5汉化补丁使用教程
topaz gigapixel ai5.4.5汉化补丁是专为同名软件所制作的一款汉化工具,由吾爱破解论坛所分享,打开汉化文件会自动释放解压文件到对应软件的qmlcache目录,此时便已经将所有界面语言 ...
- 【软件开发】Eclipse开发工具的介绍、安装及汉化
Eclipse开发工具的介绍和安装 一.Eclipse的介绍 二.Eclipse的安装 1. 下载Eclipse 2. 运行Eclipse 3. 安装Eclipse的中文语言包 4. Eclipse的 ...
- 数独程序 Hodoku 的汉化
1 汉化基于hodoku sf的官方版本 2 我修改了导致汉化的一些小bug 3 图片如下 4 git如下 https://git.oschina.net/anzhuangguai/hodoku.gi ...
- TortoiseGit小乌龟无法汉化的问题
TortoiseGit(Git小乌龟无法汉化的问题) 今天启动Git小乌龟时出现了Git小乌龟更新的提示,本着码农应该时刻保持最新动态的思想直接点击了确认更新,这一更新完之后出问题了,汉化包不能使用了 ...
- win10+anaconda环境下pyqt5+qt tools+eric6.18安装及汉化过程
最近需要用python编写一个小程序的界面,选择了pyqt5+eric6的配套组合,安装过程中遇到一些坑,特此记录.参考书籍是电子工业出版社的<PyQt5快速开发与实战>. 因为我使用an ...
- Qt汉化QColorDialog窗口
1.找到本地Qt安装目录下的qt_zh_CN.qm文件,我们拷贝一份出来放在别的路径下进行操作,仅供我们当前的程序使用.文件参考位置:D:\Qt\5.15.2\msvc2019_64\translat ...
- PyQt5随笔:Qt Designer的汉化(包括汉化包)
1.前言 安装PyQt5 原带的 Designer 图形化设计界面是英文的,对英文不好之人多有不便.但在网上找到的教程都不符合我这个版本的操作流程,例如找不到一些对应文件夹.不过汉化包还是有用的.英文 ...
最新文章
- Go 学习笔记(49)— Go 标准库之 io/ioutil(读写文件、获取目录下的文件和子目录、创建临时目录和文件)
- 【Git】Git 基础命令 ( Git 版本库概念 | 创建版本库 git init | 克隆版本库 git clone )
- 104_鼠标事件对象
- nginx_upsteam
- no protocol specified
- WARNING:Your password has expired --linux 用户密码过期
- javaone_JavaOne 2012:非阻塞数据结构如何工作?
- 11单件模式(Singleton Pattern)
- sqoop(数据迁移工具)-安装-学习
- 学术会议 | 中国杭州举办——第21届国际语义网大会​ISWC2022 Call for Papers
- Java的简单了解。
- 红石科技机器人_《机器人殖民地》—游戏简评
- 20120918-LIST类定义《数据结构与算法分析》
- 错误的参数个数或无效的参数属性值_数据处理-利用 python进行异常值分析
- 软件测试环境有几种,什么是软件测试环境_软件测试环境有哪几种_做软件测试要用到什么工具...
- GSCOOLINK GSV2006替CH6002 HDMI2.0接口芯片
- 详谈软件工程之软件开发方法
- 一张图回顾Hadoop十年 Hadoop老矣,尚能饭否
- 【EXLIBRIS】#小词旮旯# 000 初衷
- 树莓派 python 驱动 lcd tft spi 2.8寸 ili9341 240x320