qt_standard_project_setup

qt_standard_project_setup的更先进的国际化。

这个camke命令的官方说明是:项目范围默认标准设置。

该命令在Qt6包的Core组件中定义,可以像这样加载:

 find_package(Qt6 REQUIRED COMPONENTS Core)
  • 这个命令是在Qt 6.3中引入的
qt_standard_project_setup(
     [REQUIRES <version>]
     [SUPPORTS_UP_TO <version>]
     [I18N_TRANSLATED_LANGUAGES <language...>]
     [I18N_SOURCE_LANGUAGE <language>]
 )

该命令简化了设置典型Qt应用程序的任务。通常在第一次find_package(Qt6)调用之后立即调用,通常在顶级CMakeLists.txt文件中,并且在定义任何目标之前。

它可以完成以下工作:

qt_standard_project_setup()命令将CMake的一些变量设置为true,如果它们尚未定义。这将默认启用当前目录范围及其子目录中随后创建的目标的所有与Qt相关的自动生成特性。 CMake会自动包含GNUInstallDirs模块。这会为诸如CMAKE_INSTALL_BINDIR、CMAKE_INSTALL_LIBDIR等变量定义适当的默认值。 在针对Windows时,如果CMAKE_RUNTIME_OUTPUT_DIRECTORY变量尚未设置,它将被设置为${CMAKE_CURRENT_BINARY_DIR}。 针对苹果或Windows之外的目标平台,CMAKE_INSTALL_RPATH将按照以下描述进行扩展。 CMake的USE_FOLDERS属性被设置为ON,而QT_TARGETS_FOLDER被设置为QtInternalTargets。支持文件夹的集成开发环境将在此文件夹中显示Qt内部目标。

自Qt 6.5以来,可以通过选择接受来自更新的Qt版本的更改来更改Qt的CMake API的默认行为。如果指定了REQUIRES,将启用Qt引入的所有建议更改,直到REQUIRES,并且使用较旧的Qt版本将导致错误。如果另外指定了SUPPORTS_UP_TO,还将启用在SUPPORTS_UP_TO版本中引入的任何新更改(但是使用较旧的Qt版本不会导致错误)。这类似于CMake的策略概念(请参阅cmake_policy)。 在支持RPATH的平台上(除了苹果平台),此命令将向CMAKE_INSTALL_RPATH变量附加两个值。附加ORIGIN以便库能够在与自身相同目录中找到其依赖的其他库。还附加ORIGIN/<reldir>,其中<reldir>是从CMAKE_INSTALL_BINDIR到CMAKE_INSTALL_LIBDIR的相对路径。这允许安装到CMAKE_INSTALL_BINDIR的可执行文件找到任何安装到CMAKE_INSTALL_LIBDIR的可能依赖的库。CMAKE_INSTALL_RPATH中的任何重复项都将被移除。在实践中,这两个值确保可执行文件和库能够找到它们的链接时依赖项,假设项目将它们安装到install(TARGETS)命令在没有明确提供目标时使用的默认位置。 要禁用集成开发环境的文件夹支持,请在调用qt_standard_project_setup之前或之后将USE_FOLDERS设置为OFF。 通过将QT_NO_STANDARD_PROJECT_SETUP变量设置为true,可以有效地禁用qt_standard_project_setup()命令。

重点来了:

  • 自Qt 6.7以来,可以使用I18N_TRANSLATED_LANGUAGES参数指定用于项目国际化的语言。参见QT_I18N_TRANSLATED_LANGUAGES了解详细信息。 使用I18N_SOURCE_LANGUAGE指定编写可翻译字符串所用的语言。缺省情况下,使用“en”。详细信息请参见QT_I18N_SOURCE_LANGUAGE。
qt_standard_project_setup(REQUIRES 6.5 I18N_TRANSLATED_LANGUAGES en en_AU fr)

解释:需要版本至少6.5(这里来自于QT官方的一个例子,我是用的版本是6.7),加载QT_I18N_SOURCE_LANGUAGE,需要翻译的.ts有en、en_AU、fr如果你想增加中文翻译,只需要在指定的目录加上zh_CN.ts,然后将命令修改为:

qt_standard_project_setup(REQUIRES 6.5 I18N_TRANSLATED_LANGUAGES en en_AU fr zh_CN)

系统将自动生成对应的.pm文件,然后根据用户所在环境自动的执行国际化。

不用向以前if else判断了,也不需要添加资源,不需要手动生成.qm文件

以下代码也不需要了:

    QTranslator translator;
    const QStringList uiLanguages = QLocale::system().uiLanguages();
    for (const QString &locale : uiLanguages) {
        const QString baseName = "untitled_" + QLocale(locale).name();
        if (translator.load(":/projct_/" + baseName)) {
            a.installTranslator(&translator);
            break;
        }
    }

一气呵成。

该条语句示例存在于官方项目:qml-i18n 中,有兴趣的小伙伴可以自行实践。

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

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

相关文章

Claude 3 Opus 效果是否真的可以超过GPT-4?

实测,不仅是超过,而且我个人感觉这个差距甚至大于GPT3.5到GPT4的距离. claude3在长篇理学论文的解析能力是非常显著的,可以扩展补完作者省略的大量运用高等数学,复变函数以及更多数理方法的计算过程,并且将中间过程补完的非常完美.不会漏符号,错符号,偏差数值之类的问题.工科许…

【C语言】贪吃蛇项目(2)- 实现代码详解

文章目录 前言一、游戏开始界面设计首先 - 打印环境界面其次 - 游戏地图、蛇身及食物的设计1、地图2、蛇身设置及打印3、食物 二、游戏运行环节蛇的上下左右移动等功能蛇的移动 三、结束游戏代码 前言 在笔者的前一篇博客中详细记载了贪吃蛇项目所需的一些必备知识以及我们进行…

mysql_explain执行计划字段解析

【README】 本文对 explain打印的执行结果的字段进行解析&#xff1b; 本文总结自&#xff1a; MySQL :: MySQL 8.3 Reference Manual :: 10.8.2 EXPLAIN Output Formathttps://dev.mysql.com/doc/refman/8.3/en/explain-output.html 列名含义id选择标识select_type选择类型…

移动Web学习09-响应式布局bootstrap案例开发

3、综合案例-AlloyTeam移动全端 准备工作 HTML 结构 <title>腾讯全端</title> <link rel"shortcut icon" href"favicon.ico" type"image/x-icon"> <!-- 层叠性&#xff1a;咱们的css 要 层叠 框架的 --> <link rel&…

存储过程的使用(二)

目录 带 OUT 参数的存储过程 输入一个编号&#xff0c;查询数据表 emp中是否有这个编号&#xff0c;如果有返回对应员工姓名&#xff0c;如果没有&#xff0c;则提示没有对应员工 使用 EXEC 命令或者 PRINT执行含有 OUT参数的存储过程 使用 PL/SQL 块编辑程序调用含有 OUT …

JAVA 项目<果园之窗>_2

上节主要是理论流程&#xff0c;这次直接用实际例子过一遍整个流程 目标是向数据库添加一个员工 上述是前端页面&#xff0c;点击保存 浏览器向我后端发送http请求 后端这一部分专门接收employee请求 在这里对http post请求进行转换成JAVA数据&#xff0c;并处理数据&#xff…

Spring Boot后端与Vue前端融合:构建高效旅游管理系统

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…

python_列表和元组

介绍 列表&#xff08;List&#xff09;和元组&#xff08;Tuple&#xff09;是Python中两种不同的数据结构&#xff0c;它们都可以用来存储一系列的元素。下面是它们的主要特点和区别&#xff1a; 列表&#xff08;List&#xff09; 可变性&#xff1a;列表是可变的&…

广西模板厂有哪些厂家

在广西地区&#xff0c;建筑行业蓬勃发展&#xff0c;建筑模板作为建筑施工的重要材料&#xff0c;需求量逐渐增加。在这个市场中&#xff0c;贵港市能强优品木业有限公司以其卓越的产品质量和丰富的生产经验而闻名&#xff0c;成为广西地区的知名建筑模板生产厂家。 作为一家具…

OpenCV4.9使用 inRange 的阈值操作

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇:OpenCV4.9​​​​基本阈值操作 下一篇&#xff1a;利用OpenCV4.9制作自己的线性滤波器&#xff01; ​目标 在本教程中&#xff0c;您将学习如何&#xff1a; 使用 OpenCV cv&#xff1a;&#xff…

【错题集-编程题】大数乘法(模拟 + 高精度乘法)

题目链接&#xff1a;大数乘法_牛客题霸_牛客网 (nowcoder.com) 一、分析题目 根据列竖式运算的过程模拟即可&#xff0c;但是我们可以改进⼀下列竖式的过程&#xff1a; 先计算⽆进位相乘并且相加后的结果&#xff1b;然后再处理进位。 细节&#xff1a;题目所给的两个字符串…

OpenHarmony 视频播放开发教程~

介绍 本示例主要展示了网络视频播放的相关功能。使用ohos.multimedia.avsession等接口实现视频播放的功能。 效果预览 主页 使用说明 点击播放按钮&#xff0c;应用的播放状态发生变化。点击暂停按钮&#xff0c;应用的播放状态开始变化。点击上一个按钮&#xff0c;界面展…

Ribbon 添加快速访问区域

添加快速访问区域挺简单的&#xff0c;实例如下所示&#xff1a; void QtRightFuncDemo::createQuickAccessBar() { RibbonQuickAccessBar* quickAccessBar ribbonBar()->quickAccessBar(); QAction* action quickAccessBar->actionCustomizeButton(); act…

如何查找一篇英文文献的源代码?(论文中没有源代码链接时)如何查找一篇论文的实现代码从而复现论文?

有两个网址&#xff0c;从这两个网址里面能找到论文相关代码&#xff0c;但不确定是不是人家论文里的源代码&#xff0c;但是根据论文实在找不到的情况下&#xff0c;只能试试这两个网址了 1. https://paperswithcode.com/ 2. https://www.catalyzex.com/

团队协作:如何利用 Gitee 实现多人合作项目的版本控制

文章目录 前言一、名词解释1、Git是什么&#xff1f;2、Gitee、GitHub和GitLab 二、操作步骤1.安装Git2.创建Gitee仓库3.用vscode连接仓库4. 克隆远程仓库 总结 前言 在软件开发中&#xff0c;有效地管理代码是至关重要的。Gitee 是一个功能强大的代码托管平台&#xff0c;提供…

Sentinel 流控注解使用

大概原理&#xff1a;通过反射解析注解 SentinelResource信息完成调用&#xff0c;处理方法&#xff0c;类似AOP编程 处理方法的返回类型要保持一致&#xff0c;参数和顺序保持一致&#xff0c; 可以在参数列表最后加 com.alibaba.csp.sentinel.slots.block.BlockException; …

探索C语言数据结构:利用顺序表完成通讯录的实现

在好久之前我就已经学习过顺序表&#xff0c;但是在前几天再次温习顺序表的时候&#xff0c;我惊奇的发现顺序编表可以完成我们日常使用的通讯录的功能&#xff0c;那么今天就来好好通过博客总结一下通讯录如何完成吧。 常常会回顾努力的自己&#xff0c;所以要给自己的努力留…

【JavaSE】浅谈Java异常

前言 本篇文章是对Java异常体系相关内容及部分注意事项的的讲解。 一. 认识异常 在每个人的生命历程中&#xff0c;或多或少都会遇到生病或受伤的情况&#xff0c;比如&#xff1a;皮肤擦伤、感冒、发烧、患上某些传染病等等。不管“病情”严重与否&#xff0c;这些都可以算…

数据链路层协议——以太网协议

目录 要解决的问题 以太网协议 以太网帧格式 MAC地址 MAC地址和IP地址 MTU MTU对IP协议的影响 MTU对UDP协议的影响 MTU对TCP协议的影响 ARP协议 ARP协议格式 ARP协议的工作流程 ARP缓存表 要解决的问题 上一篇我们也说了&#xff0c;数据从应用层一步步封装到了网…

leetcode:滑动窗口----3. 无重复字符的最长子串

给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长 子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。示例 2: 输入: s "bbbbb" 输出: 1 解释: 因为…
最新文章