qt_standard_project_setup

server/2024/10/18 18:24:08/

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 中,有兴趣的小伙伴可以自行实践。

配合

qt_add_translations(untitledRESOURCE_PREFIX /i18nTS_FILE_BASE untitledTS_FILE_DIR i18n
)

生成前缀untitled_的.ts文件

QT6.7以前此命令只接受第一个参数作为“target”。“target”用于提取可翻译源和嵌入 .qm 文件。

QT6.7以后第一个参数“target”不再用于源提取。


http://www.ppmy.cn/server/5643.html

相关文章

nginx反向代理及负载均衡

node1192.168.136.55Nginx主负载均衡器node3192.168.136.57Web01服务器node4192.168.136.58Web02服务器node5192.168.135.131客户端&#xff08;测试&#xff09; nginx反向代理 1. 安装nginx 三台机器都安装nginx yum install nginx -y 2. 配置用于测试的Web服务(以下操作…

Web后端-请求响应

黑马程序员JavaWeb开发教程 文章目录 一、请求1、简单参数2、实体参数3、数组集合参数&#xff08;1&#xff09;数组参数&#xff08;2&#xff09;集合参数 4、日期参数5、json参数&#xff08;1&#xff09;在Postman中怎么发起请求来传递JSON格式的请求参数&#xff08;2&a…

Ansible 连接受控端sudo超时

最近在装Ansible&#xff0c;有一台受控端负载重&#xff0c;响应慢。当用Ansible连接它时&#xff0c;总是提示超时。 现象 主控端 执行脚本 ansible 192.168.5.37 -m shell -a ip a| grep 192.168.192.168.5.37 | FAILED | rc-1 >> Timeout (12s) waiting for priv…

【Proteus】蜂鸣器播放音乐

按键按一次&#xff0c;蜂鸣器响一次 &#xff0c;LCD1602同步。 #include <REGX52.H> #include <INTRINS.H>unsigned int keynum; sbit RSP3^0; //** sbit RWP3^1; //** sbit EP3^2; //** sbit buzzerP1^5; void delay(unsigned int n)//1ms {unsigned char a,…

学习空间转换-3D转换

1.什么是空间转换&#xff1f; 使用的是transform属性实现元素在空间内的位移&#xff0c;旋转&#xff0c;缩放等效果。 空间&#xff1a;是从坐标轴角度定义的。x,y,z三条坐标轴构成的一个立体空间&#xff0c;Z轴位置与视线方向相同。 所以空间转换也被叫做3D转换 语法&a…

【高电压?高电流?未来新能源汽车充电技术如何选择?】

近几年油车电车车主在网上争吵的点无非就是几个&#xff1a;成本问题、续航问题、技术成熟度和安全问题以及加油和充电的等待时间问题&#xff0c;我们知道&#xff0c;传统的燃油车在加油站加满油只需要几分钟&#xff0c;这与电动车充满电的速度形成鲜明对比&#xff0c;最早…

强固型国产化工业电脑,在电子看板行业应用,机器视觉在汽车产线行业应用

电子看板行业应用 智能电子看板的核心是通过实现工厂的全面可视化、自动化管理&#xff0c;最终达到提高效率、降低成本及提高产品质量的目标。电子看板硬件主要有两部分组成&#xff1a;微型工业计算机&#xff0c;显示终端&#xff08;平板电视、LCD&#xff09; 方案需求 …

[阅读笔记16][Orca-2]Teaching Small Language Models How to Reason

接下来是Orca-2&#xff0c;这篇是微软在23年11月发表的论文&#xff0c;在Orca-1的基础上又进行了一些改进。 作者希望教会Orca-2各种推理策略&#xff0c;例如逐步思考、回忆然后回答、先回忆再推理再回答、直接生成回答等等策略。并且Orca-2应该能针对不同任务应该使用最合适…