Qt实现中英文切换(国际化)

前言

距离上一次发博客,已经又快一个月过去了,今天写一篇有关于Qt程序如何实现中英文切换的例子,之所以写这个,是因为这是最近项目的一个需求。Qt国际化,网上的例子,很多很多.... 看似很简单,但是真正去做的时候,总是会遇到各种各样的问题,说实话,挺让人头疼的。今天,把自己遇到的一些问题,分享一下,当做笔记,记录一下;要是也能帮助到你,那就太好啦~

一、Qt国际化具体步骤:

1、在项目文件(xxx.pro)中添加如下代码,(备注:en_tr.ts代表英文的文件,zh_tr.ts代表中文文件)

TRANSLATIONS += en_tr.ts \zh_tr.ts

2、生成.ts文件

说明:.ts文件的生成,有2种方式,分别如下:

a、在Qt Creator中,依次点击:工具→外部→Qt语言家→更新翻译(lupdate),具体如图所示:执行后,你会发现项目文件夹中多了2个ts文件。

                

b、找到Qt命令行工具(如图),打开,进入到你项目的文件目录,,然后输入命令:

      lupdate -verbose xxx.pro,同样的,你会发现项目文件夹多了2个.ts文件;

                                               

3、翻译成指定语言,生成.qm文件

     找到Qt语言家工具,翻译,翻译完后,点击保存,发布,这样就生成了.qm文件

     同样的,发布的时候,也可以用命令lrelease  xxx.pro

4、加载qm文件,load(),installTranslator()

      按照以上的步骤来,就可以进行中英文切换了。

二、遇到的一些问题:

1、在生成.ts文件的时候,发现直接按照上述第一种方式,没有成功;

原因分析:应该是当初安装软件的时候,环境没有装好吧,这个目前没有深入的去分析,后续找到原因会更新~

解决方法:改用上述方式二

2、涉及到一些new 生成的变量啥的,没有被正确的中英文化。

原因分析:这个还没真没有找到原因。

解决方法:在changeEvent函数中,重新setText();【此处:感谢罗大佬~】

void xxx::changeEvent(QEvent *e)
{
    if(e->type() == QEvent::LanguageChange){
           
          //这里重新写一次setText
              
          //比如: ui->tabWidget->setTabText(1,tr("系统设置"));

        ui->retranslateUi(this);

    }
}

三、根据系统语言,确定初始语言:

代码如下:

#include "mwidget.h"
#include "login.h"
#include <QApplication>
#include <QLocale>
#include <QTranslator>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QTranslator translator;

    QLocale locale;

    if( locale.language() == QLocale::English )  //获取系统语言环境
        {
            qDebug() << "English system" ;

            translator.load(":/res/en_tr.qm");

            a.installTranslator(&translator);
        }
        else if( locale.language() == QLocale::Chinese )
        {
            qDebug() << "中文系统";

            translator.load(":/res/zh_tr.qm");

            a.installTranslator(&translator);
        }

    Login login;

    login.show();

    return a.exec();

}

四、一些建议:

1、用于中英文切换的字符串,控件啥的,在代码中,尽量用中文显示。这样做,是为了减少乱码的可能性。

五、后记:

嗯,好像写得不够详细,后面有空了,上个例子吧。如果还有疑问的小可爱们,可以先参考下别的博客,或者欢迎留言呀~

嗯,最后感谢路遇的大佬!

 

  • 5
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
软键盘是一种虚拟的输入设备,它可以在屏幕上显示出来,用户可以通过触摸屏幕上的按键来输入文字。在Qt开发中,软键盘可以被作为一个部件来实现,以支持中英文输入。 首先,我们需要定义软键盘的布局。这可以通过Qt提供的各种部件(如QLabel、QPushButton等)和布局管理器(如QGridLayout、QVBoxLayout、QHBoxLayout等)来实现。通过将这些部件放置在一个QWidget中,并将其设置为QWidget的子部件,我们就可以得到一个可自由调整大小并在屏幕上显示的软键盘。 其次,我们需要定义软键盘的输入行为。这可以通过为软键盘的按钮定义信号槽(或回调函数)来完成。在每次按钮被按下时,软键盘应该将相应的字符输入到客户端应用程序中。对于中英文输入,我们可以使用QInputMethod类来完成输入法的切换,并根据当前输入法状态将相应的字符输入到客户端应用程序中。 最后,我们需要将软键盘部件与客户端应用程序连接起来。在Qt中,部件之间的交互可以通过信号槽机制来完成。我们可以定义一个信号,为软键盘中的按钮连接该信号,当按钮被按下时,该信号会被发射。客户端应用程序中会定义一个槽函数来接收该信号,并将相应的字符输入到编辑框中。 综上所述,通过以上三个步骤,我们可以在Qt实现一个支持中英文输入的软键盘部件。这个软键盘部件可以被集成到客户端应用程序中,并提供用户在不同场景下的方便输入体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值