Qt的翻译文件QTranslator不能使用问题总结(原)

笔者今天在自己工程中使用翻译文件,发现没有起作用,反复查找,发现是用宏定义了命名空间,生成.ts文件时,不会加上命名空间,所以生成的.qm文件在实际使用时,会无法找到对应的语句。

如果将宏定义的命名空间修改为普通字符,则没有上述问题。

刚才是namespace MyProject{ 是用#define USNS namespace MyProject{定义好宏,直接使用宏的,所以生成文件,不能自己将宏转换导致

总结一下翻译碰到要注意的几个问题:

1,基本使用

QTextCodec * textCodec = QTextCodec::codecForName("System");
QTextCodec::setCodecForLocale(textCodec);

QTranslator translator;
translator.load(":/testTranslate/testtranslate_zh.qm");
a.installTranslator(&translator);

2,上面需在窗口创建前,app创建之后调用

3,如果类是在某命名空间内,生成的.ts文件的name会将命名空间名称加上,如果没有加上命名空间,翻译文件安装会出异常。如下:

<name>TTTT::testTranslate</name>

Qt的翻译文件QTranslator不能使用问题总结(原),布布扣,bubuko.com

时间: 2024-10-18 18:20:28

Qt的翻译文件QTranslator不能使用问题总结(原)的相关文章

qt 加载翻译文件 qm

QTranslator* myTranslator=new QTranslator;myTranslator->load("xxx.qm");app.installTranslator(myTranslator);QTranslator* chTranslator=new QTranslator;chTranslator->load("qt_zh_CN.qm");app.installTranslator(chTranslator);qt 加载翻译文件

QT的翻译问题

今天给同事解决问题的时候碰到一个QT的翻译问题,调用了qt的翻译更新工具,结果出来的ts文件不正确.错误的情况如下,有两个ts需要提取的翻译文件,a.cpp b.cpp 这两个文件的主要内容如下: a.cpp和b.cpp都是从一个qt的模型派生的类 a.cpp /*Qt::Display*/ xxxxx tr("文件") b.cpp /*Qt::Display*/ tr("文件") 生成的ts的问题 <location xxx a.cpp> <lo

QT5常见问题二:程序显示中文乱码以及Linguist打开翻译文件乱码,该如何解决?

在使用Qt库进行程序开发的过程中,中文乱码问题是许多程序员都会遇到的问题,解决方法也有很多种.在Qt4的各个版本中,大家解决中文乱码的方法比较一致,也很有效!一:在Qt4中通常使用如下代码,便可以轻松解决中文乱码问题: QTextCodec *codec = QTextCodec::codecForName("GB2312"); QTextCodec::setCodecForLocale(codec); QTextCodec::setCodecForCStrings(codec); Q

QT基础(五)QT工程pro文件模板变量 使用

QT工程pro文件模板变量(TEMPLATE)模板变量告诉qmake为这个应用程序生成哪种makefile.下面是可供使用的选择: app - 建立一个应用程序的makefile.这是默认值,所以如果模板没有被指定,这个将被使用. lib - 建立一个库的makefile. vcapp - 建立一个应用程序的Visual Studio项目文件. vclib - 建立一个库的Visual Studio项目文件. subdirs - 这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文

[转]Qt中ui文件的使用

用designer设计的*.ui文件可以通过uic工具转换为*.h文件(在编译时也会自动生成这样一个ui_*.h文件),有了这个.h文件就可以直接按照纯C++的方式对其中的类进行调用.ui文件的使用就是利用默认工具uic自动产生一个类,然后用该类的setui函数加载界面到相应的对象上.       .ui文件的使用有三种形式:第一种是直接使用,第二种是定义一个新类,声明一个ui子对象,利用该对象来加载界面,第三种是将ui作为基类派生新的类. 借用一个例程分析如下: 工程及界面          

qt学习(一)qt三个文件函数的框架

学到点什么, 而不是复制着什么, 每天敲着别人给的代码,苦涩得改完bug, 就这样一天天的过去, 实质上并没有学到什么, 别人的思想只是拿来借鉴, 你的思想是好是坏都是你的, 不用急着抛弃自己. 从qt看看人家的思路. Qt编程思路: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~` 以下:xxx.h ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Qt获取office文件内容

Qt获取office文件内容 需要获取word文件的文件内容.网上找了好久,大部分都是excel的.而word的很少.所以在这里记录一下,方便大家查阅和自己使用. 使用的Qt版本是5.4.2 . 下面通过代码说明: 首先在.pro文件中加入 QT       += axcontainer 需要加入以下头文件 #include <QAxWidget> #include <QAxObject> 详细代码如下 void Qt_word(QString filePath) { //指定要打

Qt对ini文件的读写

研究了以下Qt下ini文件的读写,不废话,上干货. 写入ini文件 WriteIni.cpp 1 void WriteIni::writeSettings() 2 { 3 QSettings settings("config.ini", QSettings::IniFormat); // 当前目录的INI文件 4 5 settings.beginGroup("mountinfo"); 6 settings.setValue("mount",6);

QT中.pro文件的写法

QT中.pro文件的写法   qmake 变量 含义 #xxxx 注释, 从“#”开始,到这一行结束 SOURCES 指定源文件 SOURCES = *.cpp 对于多源文件,可用空格分开 SOURCES = 1.cpp 2.cpp 3.cpp 或者每一个文件可以被列在一个分开的行里面,通过反斜线另起一行 SOURCES = hello.cpp \ main.cpp 一个更冗长的方法是单独地列出每一个文件,就像这样 SOURCES += hello.cpp SOURCES += main.cpp