Qt 系统下的qm翻译文件

一、使用背景

如果,当你使用QMessageBox、QFileDialog等系统提供的方法时,可能打开的界面中有个控件提示信息未汉化。
其实,qt是提供的qm翻译文件的,所以我们可以使用它来进行翻译了。
首先说明这里针对的是linux系统。

二、qt系统的翻译文件位置

在/usr/share/qt4/translations 目录下 ,或者/usr/share/qt5/translations,有的都有
在这里插入图片描述
在这里插入图片描述
众多翻译文件,比如 qt_zh_CN.qm 就是中文翻译,qt_zh_TW.qm就是台湾翻译,qt_ko.qm就是韩语等,大致规则就是国家缩写,网上一搜就知道了。

三、使用qt系统的翻译文件

使用的话,可以拷贝到自己项目资源里,也可以直接使用绝对路径
关键代码就是:

	QTranslator* qtTranslator = new QTranslator;
	qtTranslator->load("/usr/share/qt4/translations/qt_zh_CN.qm");/*系统绝对路径*/
	qtTranslator->load(":/qt_zh_CN.qm");/*资源文件*/
	qApp->installTranslator(qtTranslator);

四、使用例子展示

请添加图片描述

五、代码

.h文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

#include <QTranslator>
namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

    void on_comboBox_currentIndexChanged(const QString &arg1);

private:
    Ui::Widget *ui;
    QTranslator *m_translator = NULL;
};

#endif // WIDGET_H

.cpp文件

#include "widget.h"
#include "ui_widget.h"
#include <QMessageBox>
#include <QFileDialog>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    ui->comboBox->addItem("CN");
    ui->comboBox->addItem("ja");
    ui->comboBox->addItem("ko");
    ui->comboBox->addItem("uk");

    on_comboBox_currentIndexChanged("CN");
    ui->label->setText("当前语言:CN");
}

Widget::~Widget()
{
    delete ui;
    delete m_translator;
}

void Widget::on_pushButton_clicked()
{
    QMessageBox box(QMessageBox::Question,"title","this is test");
    box.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
    box.exec();
}

void Widget::on_comboBox_currentIndexChanged(const QString &arg1)
{
    if(m_translator == NULL)
        m_translator = new QTranslator;
    ui->label->setText(QString("当前语言:%1").arg(arg1));
    if(arg1 == "CN"){
        m_translator->load("/usr/share/qt4/translations/qt_zh_CN.qm");
    }else if(arg1 == "ja") {
        m_translator->load("/usr/share/qt4/translations/qt_ja.qm");
    }else if(arg1 == "ko") {
        m_translator->load("/usr/share/qt4/translations/qt_ko.qm");
    }else if(arg1 == "uk") {
        m_translator->load("/usr/share/qt4/translations/qt_uk.qm");
    }
    qApp->installTranslator(m_translator);
}

void Widget::on_pushButton_2_clicked()
{
    QFileDialog::getExistingDirectory(this,"文件选择","/");
}

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值