qt5-入门-国际化

参考:
Qt 国际化(上)_w3cschool
https://www.w3cschool.cn/learnroadqt/fwkx1j4j.html

QT5实现语言国际化(中英文界面动态切换,超详细)_qt qevent::languagechange-CSDN博客
https://blog.csdn.net/m0_49047167/article/details/108442111

本地环境:
win10专业版,64位


例1:实现翻译效果

假设我的项目叫demo,那么在demo.pro中添加一行:

TRANSLATIONS += myapp.ts

myapp.ts是一个xml文件,名字随便起的。

然后用命令行打开demo.pro所在的路径:

C:\Users\xxx\Desktop\demo\demo>lupdate demo.pro
Info: creating stash file C:\Users\xxx\Desktop\demo\demo\.qmake.stash
Updating 'myapp.ts'...
    Found 98 source text(s) (98 new and 0 already existing)

C:\Users\xxx\Desktop\demo\demo>

这说明有98个要翻译的,都没翻译。

用Qt Linguist打开myapp.ts,选择源语言和目标语言,翻译。
在这里插入图片描述
翻译写完后,点击菜单-发布,可以看到原文件夹下面有一个同名的qm文件。(二进制文件,很小)

如果是debug模式的话,把myaqq.qm放到build-demo-Desktopxxxxx-Debug文件夹下(不是放到debug下,跟exe放一起是无效的,虽然很多教程那么教:) )。

修改main():

#include <QTranslator>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
	...
    QTranslator translator;
    translator.load("myapp.qm");
    a.installTranslator(&translator);

    MainWindow w;
    w.show();

    return a.exec();
}	

在这里插入图片描述
注释掉a.installTranslator(&translator);就是未翻译前的状态
在这里插入图片描述

例2:通过combobox实现语言切换

假设mainwindow上有个combobox,里面包含中文和英文两项(以后可以更多)。点击某个语言,当前界面就会切换成另一个语言。
在这里插入图片描述
在这里插入图片描述
首先先照前面写的,准备好中文的翻译,myapp_zh.qm,放到resources下:
在这里插入图片描述
然后在mainwindow的页面上添加一个combobox,然后转到槽,写两个函数;并添加一个全局变量langCode代表语言编号。

...
#include <QTranslator>
...

class MainWindow : public QMainWindow {
	Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    static int langCode; // 全局变量
    ...
private slots:
    void on_langComboBox_activated(const QString &arg1);
    void changeEvent(QEvent *e);
	...
private:
    void createWidgets();
    Ui::MainWindow *ui;
    QTranslator translator;
    QApplication *app; 
    
};

然后修改源文件:(其中app和translator不需要初始化)

int MainWindow::langCode = 0; // 全局变量初始化
...
void MainWindow::on_langComboBox_activated(const QString &arg1)
{
    langCode = ui->langComboBox->currentIndex();
    if (langCode == 0) {
        translator.load("://resources/lang/myapp_zh.qm");
    } else if (langCode == 1) {
        translator.load("://resources/lang/myapp.qm");
    } else {
    }
    app->installTranslator(&translator);
}

void MainWindow::changeEvent(QEvent *e) {
    QWidget::changeEvent(e);
    switch (e->type()) {
        case QEvent::LanguageChange:
            ui->retranslateUi(this);
            break;
        default:
            break;
    }
}

完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/471288.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

fs方法举例

fs.readFile() 读取文件 const fs require(node:fs) const path require(node:path) const s path.resolve(__dirname, ./hello.txt) const buf fs.readFileSync(s) console.log(buf.toString())输出的Buffer对象 用toString()方法转字符串之后 fs.appendFile() 创建新…

[视觉基础知识]: img to bev # include bev seg

参考&#xff1a;https://towardsdatascience.com/monocular-birds-eye-view-semantic-segmentation-for-autonomous-driving-ee2f771afb59 有源传感器&#xff08;lidar or radar&#xff09;得到的数据&#xff0c;天然就是一种bev表示&#xff08;x-y平面&#xff09;&#…

伊理威科技:抖音店铺运营好做吗

在数字营销的浪潮中&#xff0c;抖音以其强大的用户基础和独特的算法推荐机制成为了众多商家眼中的“香饽饽”。然而&#xff0c;对于许多初涉此领域的商家来说&#xff0c;心中不免有这样的疑问&#xff1a;“抖音店铺运营好做吗?” 运营一个抖音店铺并非易事。它既需要创意的…

一次完整的 HTTP 请求所经历的步骤

1&#xff1a; DNS 解析(通过访问的域名找出其 IP 地址&#xff0c;递归搜索)。 2&#xff1a; HTTP 请求&#xff0c;当输入一个请求时&#xff0c;建立一个 Socket 连接发起 TCP的 3 次握手。如果是 HTTPS 请求&#xff0c;会略微有不同。 3&#xff1a; 客户端向服务器发…

深入理解Sora技术原理

OpenAI 发布的视频生成模型 Sora(https://openai.com/sora)&#xff0c;能根据文本生成长达一分钟的高质量视频&#xff0c;理论上支持任意分辨率&#xff0c;如 1920x1080 、1080x1920 &#xff0c;生成能力远超此前只能生成 25 帧 576x1024 图像的顶尖视频生成模型 Stable Vi…

OSPF-1类Router LSA学习

前面我们又复习了一遍OSPF概述&#xff0c;在OSPF建立关系后有几种交互报文&#xff0c;通过LSU类型报文包含LSA信息实现路由信息传递&#xff0c;常见了1、2、3、4、5、7类LSA&#xff0c;分别对应不同功能使用。这里先看下1类LSA-Router LSA。 一、LSA概述 LSA&#xff0c;全…

蓝桥练习题总结(一)字母图形、完美的代价、01串、序列求和

目录 一、字母图形 二、完美的代价 三、01字串 四、序列求和 一、字母图形 问题描述 利用字母可以组成一些美丽的图形&#xff0c;下面给出了一个例子&#xff1a; ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC 这是一个5行7列的图形&#xff0c;请找出这个图形的规律&#xff…

慧海科创再探潮间带|全面调研推动梭子蟹产业进步

浙江的海岸线延绵,孕育了丰富的海洋生物多样性。在这样的背景下,慧海科创团队沿着宁波至舟山的潮间带开展了全面的调研活动。2024年3月15日,浙江海洋大学、宁波大学、上海理工大学的梭子蟹智能捆扎实践团队,深入海岸一线,与当地养殖户交流产业发展中的痛点难点,共同探讨梭子蟹产…

【云呐】固定资产管理系统有哪些主要功能

固定资产管理是一项非常重要的任务。许多企业选择固定资产管理系统&#xff0c;以提高运营效率&#xff0c;降低企业成本。那么&#xff0c;固定资产管理系统的关键功能是什么呢&#xff1f;这个功能如何实现企业高效管理&#xff1f;  固定资产管理系统最重要的作用是资产登…

铸铁平台制造工艺有多精细你知道吗——河北北重

铸铁平台的制造工艺要求相对较高&#xff0c;需要经过以下精细工艺&#xff1a; 材料选择&#xff1a;铸铁平台通常使用灰口铸铁&#xff0c;其具有良好的耐磨性和强度。材料的选择要考虑到使用环境和平台的功能需求。 模具制造&#xff1a;根据设计要求制作模具&#xff0c;模…

SinoDB客户端工具dbaccess

类似Oracle的客户端工具sqlplus&#xff0c;Mysql的客户端工具mysql&#xff0c;SinoDB数据库也有自带的命令行客户端工具dbaccess。 dbaccess 识别用户输入&#xff0c;将用户输入的 SQL 语句打包发送给 SinoDB 数据库服务器执行&#xff0c;然后接收服务器的执行结果&#xf…

【Linux】网络基础一

网络基础一 1.计算机网络背景1.1 网络发展1.2 认识 “协议” 2.网络协议初识2.1 协议分层2.2 OSI七层模型2.3 TCP/IP五层(或四层)模型 3. 网络传输基本流程3.1 网络传输流程图 4.数据包封装和分用5.网络中的地址管理 从今天开始我们将要从系统横跨到网络的学习了&#xff0c;因…

C++特性三:多态的基本语法及原理剖析

一、多态的基本语法 多态分为两类 静态多态: 函数重载 和 运算符重载属于静态多态&#xff0c;复用函数名 动态多态: 派生类和虚函数实现运行时多态 静态多态和动态多态区别&#xff1a; 静态多态的函数地址早绑定 - 编译阶段确定函数地址 动态多态的函数地址晚绑定 - 运…

Springcloud智慧工地APP云综合平台源码 SaaS服务

目录 智慧工地功能介绍 一、项目人员 二、视频监控 三、危大工程 四、绿色施工 五、安全隐患 具体功能介绍&#xff1a; 1.劳务管理&#xff1a; 2.施工安全管理&#xff1a; 3.视频监控管理&#xff1a; 4.机械安全管理&#xff1a; 5.危大工程监管&#xff1a; …

Java设计模式 | 简单工厂模式

概述 需求 设计一个咖啡店点餐系统设计一个咖啡类&#xff08;Coffee&#xff09;&#xff1b;并定义其两个子类&#xff08;美式咖啡AmericanCoffee和拿铁咖啡LatteCoffee&#xff09;&#xff1b;再设计一个咖啡店类&#xff08;CoffeeStore&#xff09;&#xff0c;其具备…

ctf_show笔记篇(web入门---反序列化)

目录 反序列化 254&#xff1a;无用&#xff0c;是让熟悉序列化这个东西的 255&#xff1a;直接使$isViptrue 256&#xff1a;还是使用变量覆盖 257&#xff1a;开始使用魔法函数 258&#xff1a;将序列化最前面的过滤了&#xff0c;使用绕过 259: 这一题需要看writeup才…

用css滤镜做颜色不同的数据卡片(背景图对于css滤镜的使用)

<template> <div class"xx_modal_maincon"><div class"xx_model_bt">履约起始日至计算日配额及履约情况</div><el-row><el-col :span"6"><div class"xx_modal_mod"><div class"mod…

cs推免相关文书模板、基本资料

目录 复试问题 文书模板 机考指南 链接:https://pan.baidu.com/s/1WAAzTPZsASNDt5XRmAO9VA?pwd=21yk 提取码:21yk --来自百度网盘超级会员V5的分享 408专业课复习 链接:https://pan.baidu.com/s/1UI0EwWTy3zn3lm3wTQJ2Dw?pwd=t5gj 提取码:t5gj --来自百度网盘超级会…

【技术栈】Redis 中的事务及持久化方式

SueWakeup 个人主页&#xff1a; SueWakeup 系列专栏&#xff1a;学习技术栈 个性签名&#xff1a;保留赤子之心也许是种幸运吧 本文封面由 凯楠&#x1f4f8; 友情提供 目录 相关传送门 1. Redis 中的事务 2. Redis 持久化 2.1 RDB 方式 2.1.1 RDB手动 2.1.2 RDB自动 2.…

LeetCode:2684. 矩阵中移动的最大次数(DP Java)

目录 2684. 矩阵中移动的最大次数 题目描述&#xff1a; 实现代码与解析&#xff1a; DP 原理思路&#xff1a; 2684. 矩阵中移动的最大次数 题目描述&#xff1a; 给你一个下标从 0 开始、大小为 m x n 的矩阵 grid &#xff0c;矩阵由若干 正 整数组成。 你可以从矩阵第…