C

在项目中启用 Qt 安全渲染器

在 Qt Creator 中,您需要将您的关键安全问题 UI 元素包含到 Qt Quick 项目中,通过 .ui.qml 文件。以下内容描述了如何在您的 Qt Quick 项目 (.pro 文件) 中启用 Qt 安全渲染器和其工具。有关这些工具的更多信息,请参阅 Qt 安全渲染器工具

从 Qt Creator 10.0.1 开始,Qt Creator 提供了 Qt 安全渲染器项目模板。有关更多信息,请参阅 在 Qt Creator 中使用 Qt 安全渲染器项目模板

注意:Qt 安全渲染器的指标示例及其项目文件(indicators.pro)提供了大多数变量的简单示例。您也可以在宿主环境中使用指标。有关更多信息,请参阅 指标:创建关键安全 UI

包含 Qt 安全渲染器模块

使用 QT 变量,您指定哪些模块包含到您的项目中。在关键安全应用程序中,应仅使用与 Qt 安全渲染器相关的模块。但是,出于测试目的,也可以包含 Qt 模块。

以下 Qt 安全渲染器特定模块可用

描述
QT = qtsaferenderer将 Qt 安全渲染器模块添加到项目中。如果项目使用资源文件,则需要该模块。
QT = qsrplatformadaptation将平台适配器添加到项目中。即事件处理器和图形 API。

以下 CONFIG 值指定了 Qt 安全渲染器的常用项目配置和编译器选项

描述
CONFIG += exceptions已启用异常支持。

启用 Qt 安全渲染器工具

通过添加以下 CONFIG 值,您可以在项目中启用 Qt 安全布局工具Qt 安全资源编译器工具

描述
CONFIG += qtsaferendererQt 安全布局工具和 Qt 资源编译器工具将被自动启用。

注意:您还应定义其他与这些工具相关的变量,如下所述 启用 Qt 安全布局工具启用 Qt 安全资源编译器工具

还可以在下一个主题中单独启用工具。

启用 Qt 安全布局工具

Qt 安全渲染器根据提供的安全布局数据渲染关键安全问题 UI 元素。您可以使用 Qt 安全布局工具自动生成正确格式的安全布局数据。为了在您的 Qt Quick 项目中启用 Qt 安全布局工具,您必须在项目 (.pro) 文件中定义以下变量

变量描述
CONFIG += qtsafelayouttool将 Qt 安全布局工具的配置添加到项目中。

注意:如果已定义 CONFIG += qtsaferenderer,则 Qt 安全布局工具已添加到您的项目中。

SAFE_QML包含关键安全 QML 类型的 .ui.qml 文件列表。
SAFE_LAYOUT_PATH保存生成的安全布局数据的路径。
SAFE_TARGET_FPS设置 Qt 安全布局工具的每秒帧数值。这也可以通过-fps命令行选项来完成。请参阅Qt 安全布局工具

注意:要实现与 QML 描述中定义的相同持续时间,帧每秒和滴答计时器必须匹配。滴答计时器可以在ANIMATION_TIMER_TICK_IN_MS中更改。

在 Qt 安全渲染指示符示例的项目文件(indicators.pro)中,这些变量使用如下

CONFIG += qtsaferenderer exceptions
SAFE_QML = $$PWD/MainForm.ui.qml $$PWD/SecondaryForm.ui.qml
SAFE_LAYOUT_PATH = $$PWD/../telltales/layoutData

启用 Qt 安全资源编译器工具

安全关键的 UI 元素可以使用资源集合文件(.qrc)中定义的资源。如果您需要将安全关键的数据资产嵌入到应用中但没有文件系统或者不想要使用文件系统时,资源集合文件很有用。使用 Qt 安全资源编译器工具,您可以生成 Misra 兼容的数据结构。

要在您的 Qt Quick 项目中启用 Qt 安全资源编译器工具,必须在项目(.pro)文件中定义以下变量

变量描述
CONFIG += qtsafercctool将 Qt 资源编译器工具的配置添加到项目。

注意:如果您已定义CONFIG += qtsaferenderer,工具已添加到您的项目中。

QT = qtsaferenderer如果项目使用资源文件则需要。包含 Qt 安全渲染器模块。
SAFE_RESOURCES包含资源的 .qrc 文件列表。
SAFE_RESOURCE_FLAGSQt 安全资源编译器工具的标志列表。

有关 Qt 资源系统的更多信息,请参阅Qt 资源系统

将字体路径添加到项目

为了让 Qt 安全渲染器找到字体,请在项目文件中添加可选的SAFE_LAYOUT_FONTS变量。有关更多信息,请参阅嵌入式字体

SAFE_LAYOUT_FONTS = $$PWD/fonts

启用本地化

从 Qt 安全渲染器 2.0 开始,您可以本地化安全关键元素的内容。要启用本地化,必须在项目(.pro)文件中定义以下变量

变量描述
SAFE_LANGUAGES = <语言代码 1> <语言代码 2>应用程序支持的语言代码列表。例如,SAFE_LANGUAGES = en fi
SAFE_TRANSLATION = $$PWD/<翻译文件名>翻译文件名列表(不包括语言代码)。例如,SAFE_TRANSLATION = $$PWD/safeui
TRANSLATIONS += <翻译文件名>_<语言代码 1>.ts <翻译文件名>_<语言代码 2>.ts包含语言代码的翻译文件名列表。必须为 SAFE_LANGUAGES 中列出的每种语言有一个文件。例如,TRANSLATIONS += safeui_en.ts safeui_fi.ts

Qt 的 lupdate 工具从您的应用程序中提取用户界面字符串。lupdate 读取您的应用程序的 .pro 文件以确定哪些源文件包含要翻译的文本。这意味着您的源文件必须在 .pro 文件中的 SOURCES 或 HEADERS 条目中列出。如果您的文件未列出,它们中的文本将找不到。

您可以使用一个lupdate_only{...}条件语句来指定包含文本的 QML 文件

lupdate_only {
    SOURCES += SafeUI.qml
}

以下主题提供有关 Qt 中本地化的更多信息

另请参阅以下主题

启用调试信息

可以通过在项目文件中添加调试开关来获取您的关键安全元素的安全检测信息。

变量描述
SAFE_LAYOUT_EXTRA_PARAMS = -d为安全关键元素提供了调试信息。

构建 Qt 安全渲染器项目

在项目文件 (.pro) 包含 Qt 安全渲染器特定定义后,您可以通过以下步骤在 Qt Creator 中构建项目

  1. 选择 构建 > 运行 QMake。运行 qmake 工具将在 SAFE_LAYOUT_PATH 变量定义的文件夹中生成一个文件夹。
  2. 选择 构建 > 构建项目 <a project name>。构建项目会在 SAFE_LAYOUT_PATH 变量定义的文件夹下生成 .srb.srt.srl.qpf2 文件。有关这些文件的更多信息,请参阅生成安全布局数据

要运行项目,请选择 构建 > 运行

在 Qt Creator 中使用 Qt 安全渲染器项目模板

从 Qt Creator 10.0.1 开始,您可以通过使用项目模板来生成新的 Qt 安全渲染器项目。首先,您需要在 Qt Creator 中启用 Qt 安全渲染器插件,具体操作如下

  1. 选择 帮助 > 关于插件
  2. 设备支持 中,勾选 SafeRenderer

按照以下步骤生成新的 Qt 安全渲染器项目

  1. 选择 文件 > 新建项目 > 应用程序(Qt 安全渲染器)
  2. 选择 选择
  3. 按照向导上的说明创建新项目。

生成的项目为您的 Qt 安全渲染器项目提供了基础,其项目文件 (.pro) 包含了最重要的变量。您可以根据构建 Qt 安全渲染器项目中的说明构建项目。

在特定 Qt 许可下可用。
了解更多信息。