QT功能 实现静态内容国际化实验

文章目录

  • 第一步:新建一个QT工程
  • 第二步:添加控件
  • 第三步:在pro文件中添加内容
  • 第四步:更新文件
  • 第五步:打开QT的Linguist
  • 第六步:添加翻译内容
  • 第七步:回到QT Creator中添加文件
  • 第八步:给头文件增添代码
  • 第九步:给源文件添加代码
  • 关于异常问题

第一步:新建一个QT工程

  这步省略。

第二步:添加控件

  在UI设计师界面放置一个label(标签)和一个comboBox(下拉框),且双击下拉框,添加两个选项。
在这里插入图片描述
在这里插入图片描述

注意!要把【可翻译的】属性给勾选上:

在这里插入图片描述

第三步:在pro文件中添加内容

TRANSLATIONS = chinese.ts english.ts

在这里插入图片描述

第四步:更新文件

在这里插入图片描述

第五步:打开QT的Linguist

在这里插入图片描述

  打开刚刚更新生成的ts文件:
在这里插入图片描述

  出现此窗口,保持默认即可。

在这里插入图片描述

但这个需要修改一下:
在这里插入图片描述

第六步:添加翻译内容

在这里插入图片描述
在这里插入图片描述

  只需要翻译两个,其他的可以不管。

第七步:回到QT Creator中添加文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第八步:给头文件增添代码

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QTranslator>
#include <QDebug>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:Ui::MainWindow *ui;private slots:void on_comboBox_activated(const QString &arg1);//combox槽函数声明void changeEvent(QEvent *e);//changeEvent槽函数声明private:QTranslator tran;//翻译器
};
#endif // MAINWINDOW_H

在这里插入图片描述

第九步:给源文件添加代码

  为了复制粘贴,这里只放最关键的两个槽函数代码:

// 当comboBox的当前选中项改变时,此函数被调用
void MainWindow::on_comboBox_activated(const QString &arg1)
{if(ui->comboBox->currentIndex() == 0){qDebug()<<"中文显示";tran.load(":/chinese"); // 加载中文翻译文件}else if(ui->comboBox->currentIndex() == 1){qDebug()<<"英文显示";tran.load(":/english"); // 加载英文翻译文件}else{qDebug()<<"其他显示";}// 将translator安装到应用程序中,使其生效qApp->installTranslator(&tran);
}// 调用installTranslator后,系统会给窗体发送信号将产生了changeEvent槽产生event
void MainWindow::changeEvent(QEvent *e)
{QWidget::changeEvent(e);// 调用基类的changeEvent处理默认事件switch (e->type()) {// 如果事件类型是语言改变,重新翻译UI,以更新界面上的文本case QEvent::LanguageChange:ui->retranslateUi(this);break;default:break;}
}

在这里插入图片描述

关于异常问题

  在“第四步 更新文件”的时候可能会无法更新控件中的文本出来,这时候关闭软件,重新打开后构建一下(快捷键为Ctrl+B),或许会解决问题,实在不行构建之后再重新打开QT Creator,多试一下总可以的。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初阶数据结构—顺序表和链表

第一章&#xff1a;线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构&#xff0c;也就…

定时监控 Docker 服务

使用 docker 启动 x服务 之后&#xff0c;为了保证服务稳定&#xff0c;需要使用脚本监控该服务&#xff1a; 脚本内容 check_x_server.sh #/bin/bashcd /data/server #存放check_x_server.sh脚本的路径time$(date "%Y%m%d-%H:%M:%S") echo $time" checki…

推荐一个开源的MES系统

软件介绍 HM-MES是一款旨在帮助工厂实现生产计划、工艺管理和质量控制的工业生产管理软件。该软件基于Java Web技术和MySql数据库开发&#xff0c;拥有简洁、易用、安全和稳定等特点&#xff0c;适用于广泛的生产管理场景。 功能描述 1.产品和原材料双向溯源&#xff0c;支持二…

【.Net动态Web API】参数模型绑定来源

🚀前言 本文是《.Net Core进阶编程课程》教程专栏的导航站(点击链接,跳转到专栏主页,欢迎订阅,持续更新…) 专栏介绍:通过源码实例来讲解Asp.Net Core进阶知识点,让大家完全掌握每一个知识点。 专栏适用于人群:Web后端开发人员 ———————————————— …

初学者理解Transformer,本文is all you need

要问现在AI领域哪个概念最热&#xff0c;必然是openAI推出chatGPT之后引发的大模型。然而这项技术的起源&#xff0c;都来自一篇google公司员工的神作“Attention Is All You Need”——本文标题也是一种致敬^_^&#xff0c;目前已有近12万的引用(还在增长)。 在“Attention Is…

二叉树-堆

树 在数据库中&#xff0c;树是一种数据结构&#xff0c;用于组织和存储数据&#xff0c;使得可以高效地进行插入、删除和查找操作。它通常用于表示层次关系或者有序集合。 基本概念 节点&#xff1a;树结构中的每个元素都称为节点。 根节点&#xff1a;树的最顶端节点。 子…

RazorSQL for Mac:强大而全面的数据库管理工具

RazorSQL for Mac是一款功能强大、操作简便的数据库管理工具。它专为Mac用户设计&#xff0c;支持连接超过30种不同类型的数据库&#xff0c;包括MySQL、Oracle、PostgreSQL等&#xff0c;为用户提供了全面的数据库管理解决方案。 RazorSQL具有强大的数据库浏览功能&#xff0c…

陈文自媒体:创业如何才能持续小成功?

最近看了一些书&#xff0c;听了一些人讲的鸡汤&#xff0c;有点启发&#xff0c;写一些个人的心得让大家参考一下。 1、对于所谓的创业来说&#xff0c;不是追求成功&#xff0c;正确的姿势是&#xff0c;应该立于不败之地&#xff0c;只有不败才有机会成功&#xff0c;怎么才…

Java基础知识(12)

Java基础知识&#xff08;12&#xff09; &#xff08;包括&#xff1a;多线程&#xff09; 目录 Java基础知识&#xff08;12&#xff09; 一.多线程 1. 多线程基础 2. 多线程的实现方式 【1】继承Thread类的方式进行实现 【2】实现Runnable接口的方式进行实现 【3】…

一文搞懂什么是外贸企业邮箱?

一文搞懂什么是外贸企业邮箱&#xff1f;外贸企业邮箱&#xff0c;也就是外贸行业使用的企业邮箱系统&#xff0c;一般需要具备海外抵达率高、安全稳定等特点&#xff0c;通过外贸企业邮箱&#xff0c;企业可以和国内国外的客户或者同事进行业务的沟通交流。 一、什么是外贸企…

asp.net mvc使用IHttpModule拦截所有请求,包括资源文件

目录 HttpApplication 类 添加App_Code文件夹 MyHttpModel2 Web.config添加配置&#xff0c;在iis模块中生效 项目发布后&#xff0c;察看注册的自定义模块 框架集&#xff1a;.NET Framework 4.7web框架&#xff1a;asp.net mvc 5 HttpApplication 类 HttpApplication 类…

TensorFlow与PyTorch:哪个更适合深度学习项目?

TensorFlow和PyTorch都是当前深度学习领域中非常流行和强大的框架&#xff0c;它们各有优势和特点。选择哪一个框架往往取决于具体的项目需求、团队熟悉度以及社区支持等因素。下面是对两者的一些比较&#xff0c;帮助你根据不同的需求选择最合适的框架&#xff1a; ### 1. 易…

gtk_overviewGTK入门

GTK入门 Gtk概述 GUI GUI 含义&#xff1a; &#xff08;Graphics User Interface&#xff09; 图形用户界面&#xff0c; 是计算机与使用者之间的对话接口&#xff0c; 是计算机重要的组成部分&#xff0c; 比如说咱们使用电脑或手机看到的 Windows 的桌面或 wps 软件显示…

记录下搭高可用集群中Hadoop的几个配置

不断补充中... DataNode的配置&#xff1a; 假设我有5台服务器&#xff0c;分别是hadoop100-104&#xff0c;我现在需要在100和101上配置NameNode&#xff0c;在102-104上配DataNode&#xff0c;我需要在我的workers文件中增加如下内容 [atguiguhadoop102 hadoop]$ vim /opt…

YOLOV5加入Convnext模块,助力涨点!

我们找到models文件夹中的common.py文件,添加CNeB模块,如下 ########################convnext############################# class Block(nn.Module):r""" ConvNeXt Block. There are two equivalent implementations:(1) DwConv -> LayerNorm (channels…

gorm-sharding分表插件升级版

代码地址&#xff1a; GitHub - 137/gorm-sharding: Sharding 是一个高性能的 Gorm 分表中间件。它基于 Conn 层做 SQL 拦截、AST 解析、分表路由、自增主键填充&#xff0c;带来的额外开销极小。对开发者友好、透明&#xff0c;使用上与普通 SQL、Gorm 查询无差别.解决了原生s…

传统鞋业如何转型?3D数字化技术让鞋业品牌焕发新机!

数字经济时代&#xff0c;3D数字化技术在各行业都得到广泛应用&#xff0c;这其中&#xff0c;传统的鞋服行业的发展也受到了3D数字化技术的影响&#xff0c;产生了深刻的变化&#xff0c;越来越多的鞋企品牌开始尝试3D数字化营销。 比如&#xff0c;时尚运动品牌VANS就在官网上…

论文AIGC检测让毕业生头疼,如何有效降低AI查重率!

在准备毕业论文的过程中&#xff0c;不知道大家有没有跟我一样&#xff0c;遇到这样棘手的问题。我们都知道在撰写完论文后&#xff0c;进行论文查重是我们必不可少的一步。于是&#xff0c;我拿着论文进行了论文重复率的检测&#xff0c;发现重复率只有2.8%&#xff0c;看到这…

探案录 | KingbaseES+SqlSugar为医疗用户排忧解难

在2024年的初春&#xff0c;某大型三甲医院的CT预约系统上线测试&#xff0c;如同新芽破土&#xff0c;充满了希望与活力。然而&#xff0c;仅仅两天后&#xff0c;一个技术难题如同迷雾中的幽灵&#xff0c;悄然出现&#xff1a;The connection pool has been exhausted…… 福…

Python 继承顺序

继承顺序的逻辑是非常重要的,它决定了在使用子类的属性和方法时,Python 解释器的搜索顺序。 在 Python 中,当一个类继承自多个父类时,解释器会按照一定的顺序搜索属性和方法。这个搜索顺序被称为方法解析顺序(Method Resolution Order, MRO)。 假设我们有以下三个类: class …