Qt应用程序的语言切换

2023-11-08

Qt实现软件界面显示不同的语言,是通过加载字库文件实现的,因此有三个对应的问题需要解决:

  • 如何制作字库文件

创建Qt应用程序后, 

  1. 在.pro文件中添加一行代码:

TRANSLATIONS += qmain_zh.ts

    2. 使用QtCreator菜单中的【工具】->外部->Qt语言专家->更新翻译

则会自动生成.ts文件,使用Qt Linguist语言家软件打开.ts文件,编辑语言的翻译;

    如果是在代码中动态设置的文字,在需要被翻译的字符串前面添加标识tr,比如:

QString str = tr("Hello world!");

这样翻译工具就会根据这个tr标记去提取字符串,然后进行翻译;

    如果是在界面中直接添加的文字,则会自动被tr,这样在使用Qt的语言工具进行编辑时,也可以找到对应的文字,如下:

在代码中的动态文本进行翻译

在UI设计器界面上添加的文本

  • 如何加载字库文件

本示例设计的界面如下:

给两个按钮分别添加槽函数如下:

void MainWindow::useChineseSlot()
{    
    if(translator.load("C:\\Users\\zhaoliang\\Documents\\untitled1\\qmain_zh","."))
    {
        qApp->installTranslator(&translator);
    }
}

void MainWindow::useEnglishSlot()
{
    qApp->removeTranslator(&translator);
}

 

translator是QTranslator类型的私有成员

 

  • 如何实现动态切换

重新实现protected方法changeEvent(QEvent *event)

void MainWindow::changeEvent(QEvent *event)
{
    QWidget::changeEvent(event);
    switch(event->type())
    {
    case QEvent::LanguageChange:
    {
        ui->retranslateUi(this);
        ui->label1->setText(tr("this is a dynamic text"));
    }
        break;
    default:
         break;
    }
}

 

代码运行效果:

代码获取请关注微信公众号获取:

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt应用程序的语言切换 的相关文章

  • 如何在 C++ 和 QML 应用程序中使用 qrc?

    我在 Windows7 上用 c qnd Qt Creator QML 编写了 Qt Quick Desktop 应用程序 现在 我必须部署它 并且我需要隐藏 qml 文件和图像 意味着 将它们放入资源等中 我读到有一个很好的方法可以使用
  • 如何在 C++ 运行时更改 QML 对象的属性?

    我想在运行时更改 QML 对象的文本 我尝试如下 但文本仍然为空 这是后端类 class BackEnd public QObject Q OBJECT Q PROPERTY QString userFieldText READ userF
  • 有没有办法在没有 QApplication::exec() 的情况下使用 Qt?

    有没有一种安全的方法可以在不调用 QApplication exec 的情况下使用 Qt 我有许多不同的对象正在对多个资源执行长期进程 至少其中一个正在与 Web 应用程序服务器进行通信 我正在制作一个 GUI 应用程序 提示用户在正确的时
  • QTcpSocket 有时不发送数据

    我有两个 QT 应用程序 一个应用程序可以被认为保存了大数据 它每秒向第二个应用程序发送大约 10 KB 的数据块 之前我尝试使用QUdpSocket来传输数据 但由于MTU限制在2 5K左右 并且需要自己分割和重新组合数据 所以我改用QT
  • 如何在模型更改时停止ListView“跳跃”

    我需要做什么 我需要创建一个聊天窗口用一个ListView在 QML 中存储聊天消息 我设置listView positionViewAtEnd 以便跟踪最后的消息 我禁用positionViewAtEnd当我向上滚动时 我可以阅读过去的消
  • PyQt:如何设置组合框项目可检查?

    为了将 GUI 小部件数量保持在最低限度 我需要找到一种方法来为用户提供下拉菜单项的选择 这些菜单项可用于过滤掉 listWidget 项中显示的内容 假设 listWidget 列出了 5 个不同类别的项目 Cat A Cat B Cat
  • 禁用 QML Slider 的鼠标滚轮

    我希望能够滚动Flickable使用鼠标滚轮 或触摸板上的两根手指 不改变Sliders它可能包含 示例代码及结果应用 import QtQuick 2 7 import QtQuick Window 2 2 import QtQuick
  • 错误 LNK2001:无法解析的外部符号 __CxxFrameHandler3

    我正在将 Qt 从 VS 2013 迁移到 Qt 5 10 1 到 VS 2015 出现以下多个链接错误 error LNK2001 unresolved external symbol CxxFrameHandler3 error LNK
  • 向 Qt 样式表添加特异性时丢失样式

    这是我的代码 const QString STYLE SHEET background color rgba x x x y border 1px solid gray border radius 0px border top 1px so
  • 重定向 python 交互式帮助()

    我正在为使用 Qt 的应用程序开发交互式 python shell 但是我似乎无法获得重定向的交互式帮助 我的 python 代码中有这个 class OutputCatcher def init self self data def wr
  • QCombobox 向下箭头图像

    如何更改Qcombobox向下箭头图像 现在我正在使用这个 QSS 代码 但这不起作用 我无法删除向下箭头边框 QComboBox border 0px QComboBox down arrow border 0px background
  • Qt 布局,在小部件大小更改后调整到最小大小

    基本上我有一个QGridLayout里面有一些小部件 最重要的是 2 个标签 我用它们将图像绘制到屏幕上 好吧 如果用户愿意 他可以更改传入图像的分辨率 从而强制标签调整大小 我们假设标签的初始大小是320x240 用户将 VideoMod
  • 即使在可访问性中勾选应用程序,AXIsProcessTrustedWithOptions 也不会返回 true

    As this question https stackoverflow com questions 17693408 enable access for assistive devices programmatically on 10 9
  • Qt - 设置不可编辑的QComboBox的显示文本

    我想将 QComboBox 的文本设置为某些自定义文本 不在 QComboBox 的列表中 而不将此文本添加为 QComboBox 的项目 此行为可以在可编辑的 QComboBox 上实现QComboBox setEditText cons
  • QSerialPort 中的 readAll() 不包括最后发送的响应

    我正在使用 Qt 来控制串行设备 如果我向串行设备发送命令 我会执行类似的操作serial gt write command r n 我制作了一个按钮 它将纯文本小部件内的文本更改为串行端口的响应 为了获得串口的响应 我使用serial g
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • Qt 安装程序框架 - 如何在卸载时仅删除某些文件和文件夹

    我使用 Qt 安装程序框架 如何确保在卸载时仅删除某些文件或文件夹 而不是像当前那样删除安装文件夹中的所有文件 先感谢您 您可以覆盖默认行为component createOperations对于卸载程序 然后使用手动指定每个卸载路径com
  • 来自另一个类的 Qt C++ GUI 调用

    我通过 gui 拖放创建了一个按钮和一个文本浏览器 UI 以及单击按钮功能是在 mainwindow cpp 中创建的 有一个 main cpp 但这是无关紧要的 因为在单击开始按钮之前程序不会启动 include mainwindow h
  • 如何在qt中创建正确的退出按钮

    我正在尝试创建一个退出按钮来正确关闭我在 QT 中制作的 GUI 我尝试通过以下方式执行此操作 include
  • 如何从 matlab 调用 Qtproject?

    我在 matlab 中有一个函数可以写入一个 file txt 我在 qt 项目中使用它 So 当我使用 unix 获取要运行的 qt 编译可执行文件时 我有一个 Matlab 文件 但出现错误 代码 unix home matt Desk

随机推荐

  • 代理IP与Socks5代理:跨界电商智能爬虫与出海之道

    跨界电商正成为全球市场的关键驱动力 而代理IP和Socks5代理则为其提供了技术支持 本文将深入研究这两种代理技术在跨界电商 爬虫和出海战略中的重要作用 引言 介绍跨界电商的崛起和全球化趋势 引出代理IP和Socks5代理的重要性以及本文的
  • 魔兽争霸3宽屏显示器适配

    魔兽争霸只提供 4 3 的分辨率选择 800 600 1024 768 等等 如果显示器是 16 9 或 16 10 的话就有点儿蛋疼了 两边都会留出黑边来 可以在 windows 下面双击执行如下的文件来解决这个问题 wide scree
  • Atcoder Beginner Contest 291

    A camel Case AC代码 include
  • 屏蔽预训练模型的权重。 只训练最后一层的全连接的权重。_Soft-Masked BERT 一种新的中文纠错模型...

    今年 字节AI Lab与复旦大学合作提出了一种中文文本纠错模型 Soft Masked BERT 1 这项工作发表在了ACL 2020上 由于论文并没有开源代码 所以我将对这篇论文进行解读与复现 问题提出 中文文本纠错是一项挑战性的任务 因
  • Python pandas 排序出现'DataFrame' object has no attribute 'sort'错误

    目标 对dataframe一列时间字符串做升序排列 时间字符串格式 2020 03 23 06 20 00 00 00 df sort MTS ascending True 运行提示 AttributeError DataFrame obj
  • CNN训练细节:卷积核分解

    背景 最近看到一些分解卷积层的方法 比如三个3 3的卷积层替代一个7 7的卷积层 或者两个3乘3的卷积层替代一个5 5的卷积层 本文主要是个人粗浅的分析下原因 一 两个3乘3的卷积层替代一个5 5的卷积层 经典原理网图 如图所示 对于两层3
  • 蓝桥杯校内模拟赛题解

    蓝桥杯校内模拟赛题解 引言 本题解非官方满分题解 因此 可能存在下列问题 题意理解错误 导致答案错误 代码中存在一些问题 导致答案错误 算法复杂度的分析有误 导致不能在规定时间内得出结果 由于水平受限 本篇题解全部由 C 语言完成 题解中的
  • 自我管理的重要模型

    文章目录 前言 一 精力管理 自我管理的新旧理念 二 人类精力金字塔 精力管理四个层次 体能 情绪 思维 精神 三 运动 人类为什么喜欢躺平 每天怎么简单高效的完成20分钟的运动量 四 钟摆运动 钟摆运动对工作最大的指导意义 刻意休息 在这
  • Java 到 Go 过渡:基于 Go 开发分布式配置中心的实践

    目录 一 简介 二 Java 实现 三 Go 实现 四 从 Java 过渡到 Go 五 总结 在今天的技术世界中 从一种编程语言转向另一种是很常见的 特别是对于在企业级应用中具有广泛应用的语言如 Java 转向轻量级 效率更高的 Go 语言
  • 【因果学习】贝叶斯网络结构学习方法

    随机对照试验是发现因果关系的黄金准则 然而现实世界中很多问题往往由于道德伦理的原因不允许我们设置干预进行试验 这就引发了在观测数据上学习因果关系的需求 贝叶斯网络是概率论与图论相结合的产物 它用图论的方式直观地表达各变量之间的因果关系 为多
  • 面向对象编程(OOP):理解类、封装性的关键概念

    文章目录 对象 Object 什么是对象 面向对象 OOP 面向过程的编程语言 面向对象的编程语言 类 class 使用类创建对象的流程 类的定义 代码演示 初始化方法和实例属性 类属性和类方法 继承和多态 魔术方法 小结 类的封装性 属性
  • JSR303使用说明文档

    1 引言 参数校验是我们程序开发中必不可少的过程 用户在前端页面上填写表单时 前端js程序会校验参数的合法性 当数据到了后端 为了防止恶意操作 保持程序的健壮性 后端同样需要对数据进行校验 后端参数校验最简单的做法是直接在业务方法里面进行判
  • 大数据单机学习环境搭建(1)Hadoop本地单节点安装

    专题 大数据单机学习环境搭建和使用 1 资源获取 免费下载 2 Hadoop 本地模式 安装及文件配置 2 1安装java 2 2Hadoop安装与配置 2 3设置ssh免密登录 2 4开启hadoop 2 6访问应用 大数据单机学习环境搭
  • mysql 中使用 update 同时更新多个字段

    update 表名 set 字段1 新值1 字段2 新值2 字段3 新值3 where 条件 mysql gt select from tb person id name phone age sex description create t
  • 多机docker部署fisco-bcos区块链

    0 首先每台机器安装docker sudo yum install docker 展示一下机器环境 一共5台机器 111 203 104 97 111 203 104 113 111 203 104 114 111 203 104 116
  • 随想012:断言

    C 标准库提供了名为 assert 的断言宏 C 语言提供了名为 Debug Assert 的断言方法 Java 语言提供名为 assert 的断言关键字 主流编程语言不约而同的在语言层面上提供了 断言 机制 David R Jamson
  • linux-0.12内核之内存管理(1)

    1 内存分页管理机制 内存分页管理是通过页目录表和内存页表所组成的二级表组成的 其中页目录表和页表的结构是一样的 表项结构也相同 页目录表中的每个表项 4B 来寻址一个页表 而每个页表项 4B 来指定一页物理内存页 因此 当指定了一个页目录
  • ansys时间步长怎么设置_ANSYS瞬态动力学分析中的时间步长的选择

    对于瞬态动力学分析问题 如何选取合适的时间步长 才能保证得到正确的计算结果呢 这是我们在瞬态动力学分析中需要关注的一个问题 积分时间步长的选取决定了瞬态动力学问题的求解精度 时间步长越小 则计算精度越高 太大的时间步长会导致高阶模态的响应出
  • centos7下rpm方式安装mysql

    一 CentOS下通过rpm方式安装MySQL CentOS版本 CentOS 7 MySQL版本 MySQL 5 6 22 在网上搜了一下 Linux下安装MYSQL有三种方式 1 通过yum命令在线下载安装 2 下载离线rpm安装包安装
  • Qt应用程序的语言切换

    Qt实现软件界面显示不同的语言 是通过加载字库文件实现的 因此有三个对应的问题需要解决 如何制作字库文件 创建Qt应用程序后 在 pro文件中添加一行代码 TRANSLATIONS qmain zh ts 2 使用QtCreator菜单中的