• 5892阅读
  • 9回复

[提问]怎样将消息框的按钮文字变成中文的? [复制链接]

上一主题 下一主题
离线hjh2008
 

只看楼主 倒序阅读 楼主  发表于: 2012-04-23
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
我用了网上的方法:
(1)在项目目录中新建一个文本文件,输入如下内容:
         <RCC>
                 <qresource prefix="/">
                    <file>qt_zh_CN.qm</file>
                 </qresource>
            </RCC>
         保存后,将该文本文件的后缀名由txt改为qrc,表明这是资源文件。
(2)在Qt Creator中将上述文件加到你的项目中。
(3)修改代码如下,表示要加载相应的资源文件。

         QTranslator oTranslator;
         oTranslator.load(":/qt_zh_CN");// 注意此处字符串以“:/”开头,后接的字符串是刚才复制的qm文件的名字
         QApplication oApp(argc, argv);
         oApp.installTranslator(&oTranslator);


但是结果还是英文的,这到底是怎么回事?还有其它办法吗? 谢谢!


离线zooood
只看该作者 1楼 发表于: 2012-04-23
去百度搜索一下“qt 国际化”
lz说的只是完整流程的部分操作,而且不怎么正规
离线hjh2008

只看该作者 2楼 发表于: 2012-04-24
搜了  没找到解决方案!  有谁知道怎么解决吗? 谢谢!
离线passion_wu
只看该作者 3楼 发表于: 2012-04-24
在main函数中的QApplication a(argc, argv);这一行之后添加
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));
(linux下编码要用UTF-8)
然后字符串用 tr 函数构造,就可以咯.
离线hjh2008

只看该作者 4楼 发表于: 2012-04-24
楼上的方法是将自己的文字变为中文的,

我的问题是,怎么把Qt自带的QMessageBox消息框的按钮“OK” “Cancel” 等文字变成中文的!


谢谢!
离线roywillow

只看该作者 5楼 发表于: 2012-04-24
首先,那些文本是Qt库中的文本,所以人家肯定已经为国际化做好准备了
其次,Qt官方已经提供了翻译文件了,就在Qt目录下的translation里
最后,你只要知道如何加载翻译文件夹就万事ok
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线ffii4455

只看该作者 6楼 发表于: 2012-04-24
貌似,还和构建路径有关系。。。
我当初写好qm文件后,用qtcreator直接运行程序,标准对话框还是英文的。但是从资源管理器里打开程序,对话框就是中文的。
离线hjh2008

只看该作者 7楼 发表于: 2012-04-25
回 5楼(roywillow) 的帖子
我在顶楼写的加载方式有问题吗?
离线roywillow

只看该作者 8楼 发表于: 2012-04-25
回 7楼(hjh2008) 的帖子
没看出来问题
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线zhaodan0801
只看该作者 9楼 发表于: 2012-04-26

把下面这段文字写进main.cpp中去就可以了,希望可以帮到你
QString translatorFileName = QLatin1String("qt_");
    translatorFileName += QLocale::system().name();
    QTranslator *translator = new QTranslator(&app);
    if (translator->load(translatorFileName, QLibraryInfo::location(QLibraryInfo::TranslationsPath)))
        app.installTranslator(translator);
快速回复
限100 字节
 
上一个 下一个