自定义向导
如果您有一个团队正在开发大型应用程序或多个应用程序,您可能希望标准化团队成员创建项目和文件的方式。
您可以使用 JSON 格式创建自定义向导。它们存储在包含名为 wizard.json 的 JSON 配置文件以及任何所需的模板文件的向导模板目录中。配置文件包含指定向导信息、您可以使用的变量、向导页和创建文件的生成器部分。
要创建自定义向导,将模板目录复制到本地用户设置目录下的 templates/wizards/ 目录,并使用新名称。然后更改 wizard.json 文件中的向导 ID。
您可以在设置目录中为模板创建子目录。Qt Creator 依据类型将标准向导组织到子目录中,但您可以将向导目录添加到您喜欢的任何目录。文件夹层次结构不影响 Qt Creator 显示向导的顺序。
要与其他用户共享向导,您可以创建向导目录的存档,并指示收件人将其提取到 Qt Creator 搜索向导的目录之一。
Qt Creator 在 新建项目 和 新建文件 对话框中显示找到的向导。对于每个向导,它显示一个图标(1)、一个显示名称(2)和描述(3)。

向导类型
在项目向导中,您可以指定项目中需要的文件。您可以添加向导页以允许可开发人员指定项目设置。
文件向导与此类似,但它没有项目文件。
定位向导
Qt Creator 在以下位置搜索向导
- 共享目录中的预定义向导- 在 Windows 上: share\qtcreator\templates\wizards
- 在 Linux 上: share/qtcreator/templates/wizards
- 在 macOS 上: Qt Creator.app/Contents/Resources/templates/wizards
 
- 在 Windows 上: 
- 您的自定义向导位于本地用户设置目录中- 在 Windows 上: %APPDATA%\QtProject\qtcreator\templates\wizards
- 在 Linux 和 macOS 上: $HOME/.config/QtProject/qtcreator/templates/wizards
 
- 在 Windows 上: 
向导开发提示
为一些辅助动作分配键盘快捷键并开启详细输出。
将操作分配给键盘快捷键
Qt Creator 拥有一些可以改进向导开发过程的操作。它们默认没有键盘快捷键,所以不能触发。要启用它们,请在首选项 > 环境 > 键盘 > 向导中分配键盘快捷键。
以下操作有助于向导开发
| 操作 ID | 描述 | 
|---|---|
| 检查 | 触发此操作将打开一个窗口,显示在触发操作时向导中定义的所有字段和变量。本操作的每次激活都将打开一个新的非模态窗口,因此您可以比较向导的不同页面状态,例如。 | 
| Factory.Reset | 触发此操作将使 Qt Creator 忘记所有向导工厂,导致它在打开例如 文件 > 新建项目 时重新加载所有向导定义。这样,您就可以避免因为更改向导定义而需要重新启动 Qt Creator。 | 
详细输出
对于向导开发,我们建议您使用 -customwizard-verbose 参数启动 Qt Creator,以确认 Qt Creator 找到并分析了 wizard.json 文件。详细模式显示关于语法错误的信息,这是您在编辑向导时可能遇到的最典型的错误。
在详细模式下,每个正确配置的向导都会产生如下类型的输出
Checking "/home/jsmith/.config/QtProject/qtcreator/templates/wizards/mywizard" for wizard.json. * Configuration found and parsed.
输出包括 Qt Creator 检查 wizard.json 文件的目录名称。如果没有找到文件,不会显示消息。
如果文件存在错误,例如无效的图标路径,您将收到以下类型的消息
Checking "/home/jsmith/.config/QtProject/qtcreator/templates/wizards/mywizard" for wizard.json. * Configuration found and parsed. * Failed to create: Icon file "/home/jsmith/.config/QtProject/qtcreator/templates/wizards/mywizard/../.. /global/genericfilewizard.png" not found.
有关命令行参数的更多信息,请参阅 命令行选项。
将向导集成到构建中
如果您是 Qt Creator 开发者或为他人构建自己的 Qt Creator 版本,则可以将向导集成到 Qt Creator 中。要将向导作为 Qt Creator 构建的一部分交付,请将向导文件放置在 Qt Creator 源代码的共享目录中。然后选择 构建 > 运行 CMake。这将确保您为向导添加的新文件实际上作为 Qt Creator 下一个构建过程的组成部分从 Qt Creator 源代码目录复制到 Qt Creator 构建目录。
如果您不运行 CMake,新向导将不会显示,因为它不在您从其中运行新构建的 Qt Creator 构建目录中存在。由于 CMake 未将源代码树中的新文件通知构建工具(如 make 或 Ninja),它们从未被复制到那里。
基本来说,CMake 生成从源目录到构建目录子目录(在运行时检查向导的目录)复制的固定文件列表。因此,每次文件名或位置发生变化时,您都需要运行 CMake 或执行 Factory.Reset 函数。
在向导中使用变量
您可以在 JSON 配置文件和模板源文件中的字符串中使用变量(%\{<variableName>\})。向导及其页面预定义了一组变量。您可以通过在 wizard.json 文件的 options 部分中定义变量键名和值来引入新的变量,作为后续使用的快捷方式。
存在一个特殊的变量 %\{JS:,它评估给定的 JavaScript 表达式,并将结果转换为字符串。在 JavaScript 表达式中,你可以使用 value('<变量名称>') 来引用由向导定义的变量。返回的 JavaScript 对象具有与之对应的变量类型的类型,可以是字符串、列表、字典或布尔值。
在期望布尔值的位置上给出字符串时,空字符串以及字符串 "false" 被视为 false,其余则视为 true。
本地化向导
如果设置名称以 tr 前缀开始,则值对用户可见并应进行翻译。如果新向导包含在 Qt Creator 源代码中,可翻译的字符串将出现在 Qt Creator 翻译文件中,并可作为 Qt Creator 的一部分进行翻译。或者,您可以使用以下语法将翻译放入 .json 文件中
"trDisplayName": { "C": "default", "en": "english", "de": "deutsch" }
例如
"trDisplayName": { "C": "Project Location", "en": "Project Location", "de": "Projektverzeichnis" }
创建向导
Qt Creator 提供用于添加类、文件和项目的向导。您可以将它们作为添加您自己的向导的基础。我们使用 C++ 向导来解释这个过程以及 .json 文件中的部分和设置。
在此示例中,我们在共享目录中创建向导目录并将其集成到 Qt Creator 构建系统中,以便它随 Qt Creator 二进制文件一起部署,作为构建的一部分。

有关您可以添加的页面和控件及其支持的属性的信息,请参见 可用页面 和 可用控件。
要创建基于 JSON 的 C++ 类向导
- 启动 Qt Creator 时使用 -customwizard-verbose参数,以在向导开发过程中接收反馈。有关更多信息,请参阅 详细输出。
- 设置 Inspect 和 Factory.Reset 之间动作的快捷键,方法如 向导开发技巧 中所述。
- 复制 share/qtcreator/templates/wizards/classes/cpp并重命名它。例如,$HOME/.config/QtProject/qtcreator/templates/wizards/classes/mycpp。
- 使用 Factory.Reset 行动使向导出现在 文件 > 新建文件,无需重新启动 Qt Creator。
- 打开向导配置文件 wizard.json进行编辑- 以下设置确定向导的类型及其在 新建文件 对话框中的位置"version": 1, "supportedProjectTypes": [ ], "id": "A.Class", "category": "O.C++", - version是文件内容的版本。不要修改此值。
- supportedProjectTypes是一个可选设置,可用于过滤在向现有项目添加新构建目标时的向导。例如,在向现有 qmake 项目添加新目标时,仅显示生成 qmake 项目的向导。- 可能值是 Qt Creator 支持的构建系统,或者如果未指定构建系统,则为 - UNKNOWN_PROJECT:- AutotoolsProjectManager.AutotoolsProject、- CMakeProjectManager.CMakeProject、- GenericProjectManager.GenericProject、- PythonProject、- Qbs.QbsProject、- Qt4ProjectManager.Qt4Project(qmake 项目)、- QmlProjectManager.QmlProject
- id是您向导的唯一标识符。向导按照字母顺序在- category内按 ID 进行排序。您可以使用字母开头来指定向导的位置。您必须始终更改此值。例如,- B.MyClass。- 此信息作为 - %\{id\}出现在向导中。
- category是要在其中放置向导的列表中的类别。您可以在 “新文件” 对话框中通过开头字母来指定类别在列表中的位置。- 此信息作为 - %\{category\}在向导中可用。
 
- 以下设置指定了 “新文件” 对话框中显示的图标和文本。"trDescription": "Creates a C++ header and a source file for a new class that you can add to a C++ project.", "trDisplayName": "C++ Class", "trDisplayCategory": "C++", "iconText": "h/cpp", "enabled": "%{JS: value('Plugins').indexOf('CppEditor') >= 0}", - trDescription在选择- trDisplayCategory时显示在右侧面板中。- 此信息作为 - %\{trDescription\}在向导中可用。
- trDisplayName在选择- trDisplayCategory时显示在中间面板中。- 此信息作为 - %\{trDisplayName\}在向导中可用。
- trDisplayCategory显示在 “新文件” 对话框中的 “文件和类” 下。- 此信息作为 - %\{trDisplayCategory\}在向导中可用。
- icon在选择- trDisplayCategory时显示在中间面板中的- trDisplayName旁边。我们建议您指定相对于 wizard.json 文件的路径,但也可以使用绝对路径。省略此值将使用向导类型的默认图标。
- iconText确定了默认文件图标的文字叠加。
- iconKind确定了图标是否主题化。
- image指定了一个图像(例如截图)的路径,该图像显示在- trDescription下方。
- featuresRequired指定了向导所依赖的 Qt Creator 特性。如果缺少所需特性,则向导将隐藏。例如,如果没有构建套件设置 Qt 版本,则基于 qmake 的向导将隐藏。- 如果需要表达更复杂的逻辑来决定是否提供向导,请使用 - enabled。- 此信息作为 - %\{RequiredFeatures\}在向导中可用。
- featuresPreferred指定了要预选择的构建和运行套件。- 此信息作为 - %\{PreferredFeatures\}在向导中可用。
- platformIndependent设置为- true表示向导支持所有目标平台。默认情况下,它设置为- false。
- enabled被评估以确定向导是否列在 “文件” > “新项目” 或 “新文件” 中,在验证- featuresRequired之后。- 默认值是 - true。
 
- 在 options节中有一个包含具有 key 和 value 属性的对象数组。除了预定义变量之外,您还可以定义自己的变量以在配置文件和模板源文件中使用。例如,C++ 类创建向导使用以下变量"options": [ { "key": "TargetPath", "value": "%{Path}" }, { "key": "HdrPath", "value": "%{Path}/%{HdrFileName}" }, { "key": "SrcPath", "value": "%{Path}/%{SrcFileName}" }, { "key": "CN", "value": "%{JS: Cpp.className(value('Class'))}" }, { "key": "Base", "value": "%{JS: value('BaseCB') === '' ? value('BaseEdit') : value('BaseCB')}" }, { "key": "isQObject", "value": "%{JS: (value('Base') === 'QObject' || value('Base') === 'QWidget' || value('Base') === 'QMainWindow' || value('Base') === 'QQuickItem' ) ? 'true' : 'false'}" }, { "key": "GUARD", "value": "%{JS: Cpp.headerGuard(value('HdrFileName'))}" }, { "key": "SharedDataInit", "value": "%{JS: value('IncludeQSharedData') ? 'data(new %{CN}Data)' : '' }" } ], 此部分是可选的。有关更多变量的示例,请参阅其他向导的 wizard.json文件。
- 在 pages节中指定了向导页面。使用的页面取决于向导类型。您可以向向导中添加标准页面或使用可用的小部件创建新页面。以下设置指定了页面的显示名称、标题和类型"pages": [ { "trDisplayName": "Define Class", "trShortTitle": "Details", "typeId": "Fields", "data" : [ { "name": "Class", "trDisplayName": "Class name:", "mandatory": true, "type": "LineEdit", "data": { "trPlaceholder": "Fully qualified name, including namespaces", "validator": "(?:(?:[a-zA-Z_][a-zA-Z_0-9]*::)*[a-zA-Z_][a-zA-Z_0-9]*|)", "completion": "namespaces" } }, ... ] - typeId指定要使用的页面:- “字段”、- “文件”、- “表单”、- “套件”、- “项目”、- “版本控制配置”、- “版本控制命令”或- “摘要”。- 全页ID,在代码中使用,由前缀为 - "PE.Wizard.Page."的- typeId组成。有关页面信息的更多信息,请参阅可用页面。
- trDisplayName指定页面的标题。默认情况下,使用页面标题。
- trShortTitle指定在向导侧边栏中使用的标题。默认情况下,使用页面标题。
- trSubTitle指定页面的副标题。默认情况下,使用页面标题。
- index是一个整数值,它指定页面ID。如果您没有设置它,则会自动分配。
- enabled设置为- true以显示页面,并设置为- false以隐藏页面。
- data指定向导页面。在C++向导中,它指定- Fields页面和- Summary页面。该- Fields页面具有- CheckBox、- ComboBox、- LineEdit、- PathChooser和- Spacer小部件。有关小部件的更多信息,请参阅可用小部件。
 
- generators部分指定要添加到项目中的文件。- "generators": [ { "typeId": "File", "data": [ { "source": "file.h", "target": "%{HdrPath}", "openInEditor": true "options": [ { "key": "Cpp:License:FileName", "value": "%{HdrFileName}" }, { "key": "Cpp:License:ClassName", "value": "%{CN}" } ] }, { "source": "file.cpp", "target": "%{SrcPath}", "openInEditor": true "options": [ { "key": "Cpp:License:FileName", "value": "%{SrcFileName}" }, { "key": "Cpp:License:ClassName", "value": "%{CN}" } ] } ] - typeId指定生成器的类型。当前只支持- File或- Scanner。
- data可以进一步配置生成器。
 
 
- 以下设置确定向导的类型及其在 新建文件 对话框中的位置
向导可用的值
除了从wizard.json文件本身获取的属性之外(见创建向导),Qt Creator还为所有基于JSON的向导提供了某些信息。
- WizardDir是- wizard.json文件的绝对路径。
- Features列出了Qt Creator中配置的任何工具包可用的所有功能。
- Plugins列出当前Qt Creator实例中运行的插件列表。
- Platform具有在文件 > 新建项目或新建文件对话框中选择的平台。此值可能为空。
以下信息仅在使用用户在项目视图节点上下文菜单中触发向导时可用
- InitialPath包含所选节点的路径。
- ProjectExplorer.Profile.Ids具有为所选节点项目配置的工具包列表。
可用页面
您可以通过在向导.json文件的pages部分中指定它们来向向导添加预定义页面。
字段页面
字段页面具有值为Field的typeId,并且具有小部件。有关小部件定义的更多信息,请参阅可用小部件。
"pages": [ { "trDisplayName": "Define Class", "trShortTitle": "Details", "typeId": "Fields", "data" : [ { "name": "Class", "trDisplayName": "Class name:", "mandatory": true, "type": "LineEdit", "data": { "trPlaceholder": "Fully qualified name, including namespaces", "validator": "(?:(?:[a-zA-Z_][a-zA-Z_0-9]*::)*[a-zA-Z_][a-zA-Z_0-9]*|)", "completion": "namespaces" } }, ... ],
文件页面
文件页面具有值为File的typeId。您可以省略data密钥或将它分配为空对象。
{
    "trDisplayName": "Location",
    "trShortTitle": "Location",
    "typeId": "File"
},页面从向导中评估InitialFileName和InitialPath,并设置初始路径和文件名。页面将TargetPath设置为要创建的文件的完整路径。
表单页面
表单页面具有值为Form的typeId。您可以省略data密钥或将它分配为空对象。
{
    "trDisplayName": "Choose a Form Template",
    "trShortTitle": "Form Template",
    "typeId": "Form"
},该页面将表单内容设置为一个包含表单内容的字符串数组 FormContents。
套件
套件页面具有值 typeId Kits。套件页面的 data 部分包含以下设置的对象
- 包含项目文件路径的 projectFilePath。
- 包含必须出现在页面上的套件必须拥有的特性的字符串或对象的列表 requiredFeatures。当找到字符串时,必须设置此特性。当使用对象代替时,将检查以下设置 - feature,它必须是一个字符串(将展开所有- %\{<VariableName\})。
- condition,它必须评估为- true或- false,并可用来从列表中排除此特性。
 
- 包含与 requiredFeatures同样格式的列表preferredFeatures。任何匹配preferredFeatures中所列所有特性的套件(除requiredFeatures)将在此页面上预选。
{
    "trDisplayName": "Kit Selection",
    "trShortTitle": "Kits",
    "typeId": "Kits",
    "enabled": "%{IsTopLevelProject}",
    "data": { "projectFilePath": "%{ProFileName}" }
},页面评估 %\{Platform\} 以设置在 文件 > 新建项目 或 新建文件 中选定的平台。
项目
项目页面具有值 typeId Project。它没有数据或有包含将显示在生成的页面上的 trDescription 属性的对象。trDescription 的默认值是 %\{trDescription\},它是使用从 wizard.json 文件中的 trDescription 字段获取的信息填充的。
{
    "trDisplayName": "Project Location",
    "trShortTitle": "Location",
    "typeId": "Project",
    "data": { "trDescription": "A description of the wizard" }
},页面评估 InitialPath 以设置初始项目路径。页面将 ProjectDirectory 和 TargetPath 设置为项目目录。
概要
概要页面具有值 typeId Summary。它没有数据或一个空对象。
{
    "trDisplayName": "Project Management",
    "trShortTitle": "Summary",
    "typeId": "Summary"
}如果这是一个顶级项目,页面将 IsSubproject 设置为空字符串;否则设置为 yes。它将 VersionControl 设置为所使用的版本控制系统的 ID。
VcsCommand
VcsCommand 页面运行一系列版本控制操作并显示结果。
此页面的 data 部分接受一个具有以下键的对象
- 包含要使用的版本控制系统的 ID vcsId。
- 包含版本控制运行时显示的消息 trRunMessage。
- 包含定义传递给版本控制检出命令的额外参数的字符串或字符串列表 extraArguments。
- 包含从版本控制系统中检出URL的 repository。
- 包含运行检出操作所处的目录的 baseDirectory。
- 包含创建以存放检出的数据的子目录的 checkoutName。
- 包含定义在初始检出后运行的额外命令的对象列表 extraJobs。这可以通过例如添加额外的远程存储库或设置版本控制系统的配置变量来进一步定制存储库。每个 extraJob是一个具有以下设置的独立的对象定义- 如果设置为 true,则skipIfEmpty静默地从运行命令中去除空参数。默认为true。
- 目录包含运行命令的工作目录。默认值为- baseDirectory的值。
- 命令包含要运行的命令。
- 参数包含传递给- 命令的参数。
- timeOutFactor延长了长时间运行的命令的默认超时时间。
- enabled将被评估以决定是否实际执行这个工作。
 
- 如果设置为 
版本控制配置
版本控制配置页面会提示用户配置版本控制系统,并且只有在配置成功后才会启用 下一步 按钮。
此页面的 data 部分接受一个带有 vcsId 键的对象。此设置定义了将要配置的版本控制系统。
可用小部件
您可以在字段页面上添加以下小部件
- 复选框
- 组合框
- 标签
- 行编辑
- 路径选择器
- 间隔
- 文本编辑
注意:向导仅支持以下章节中记录的设置。
为每个小部件指定以下设置
- name指定小部件名称。此名称用作变量名称以再次访问该值。
- trDisplayName指定在 UI 中可见的标签文本(如果- span不为- true)。
- type指定小部件的类型:- CheckBox,- ComboBox,- Label,- LineEdit,- PathChooser,- Spacer和- TextEdit。
- trToolTip指定当鼠标悬停在该字段上时要显示的工具提示。
- isComplete对于所有字段都被评估以决定向导的 下一步 按钮是否可用。所有字段都必须将其- isComplete评估为- true才会发生这种情况。此设置的默认值是- true。
- trIncompleteMessage在字段- isComplete评估为- false时显示。
- persistenceKey使用户的选择持久存在。值被用作设置键。如果用户更改小部件的默认值,则用户的值将被存储,并在下次运行向导时成为新默认值。
- visible如果小部件可见,则将其设置为- true,否则设置为- false。默认设置为- true。
- enabled如果小部件可用,则将其设置为- true,否则设置为- false。默认设置为- true。
- mandatory如果必须为小部件指定值才能启用 下一步 按钮,则将其设置为- true。默认设置为- true。
- span设置为隐藏标签并跨越表单。默认设置为- false。有关更多信息,请参阅 向导中使用变量。
- data指定了特定小部件类型的附加设置,如以下各节所述。
复选框
{
    "name": "IncludeQObject",
    "trDisplayName": "Include QObject",
    "type": "CheckBox",
    "data":
    {
        "checkedValue": "QObject",
        "uncheckedValue": "",
        "checked": "%{JS: value('BaseCB') === 'QObject' ? 'true' : 'false'}"
    }
},- checkedValue指定当复选框启用时要设置的值。默认设置为- true。
- uncheckedValue指定复选框禁用时要设置的值。默认设置为- false。
- checked当复选框启用时设置为- true,否则为- false。
列表
注意:组合框和图标列表类型都是列表类型的变种,因此它们可以有相同的属性。
{
    "name": "BaseCB",
    "trDisplayName": "Base class:",
    "type": "ComboBox",
    "data":
    {
        "items": [ { "trKey": "<Custom>", "value": "" },
                   "QObject", "QWidget", "QMainWindow", "QQuickItem" ]
    }
},或
{
    "name": "ChosenBuildSystem",
    "trDisplayName": "Choose your build system:",
    "type": "IconList",
    "data":
    {
        "items": [
            { "trKey": "CMake", "value": "cmake", "icon": "cmake_icon.png", "trToolTip": "Building with CMake." },
            { "trKey": "Qbs", "value": "qbs", "icon": "qbs_icon.png", "trToolTip": "Building with Qbs." },
            { "trKey": "QMake", "value": "qmake", "icon": "qmake_icon.png", "trToolTip": "Building with QMake." }
        ]
    }
},- items指定要放入列表类型的项的列表。该列表可以包含 JSON 对象和纯字符串。对于 JSON 对象,定义- trKey和- value对,其中- trKey是供用户看到的列表项,而- value包含与项相关联的数据。此外,您可以使用- icon为列表项指定图标,并使用- trToolTip指定工具提示。
- index指定在列表类型启用时选择的索引。默认设置为- 0。
- disabledIndex指定在列表类型禁用时显示的索引。
标签
{
    "name": "LabelQQC_2_0",
    "type": "Label",
    "span": true,
    "visible": "%{JS: value('CS') === 'QQC_2_0'}",
    "data":
    {
        "wordWrap": true,
        "trText": "Creates a deployable Qt Quick 2 application using Qt Quick Controls.",
    }
},- wordWrap设置为- true以启用换行。默认设置为- false。
- trText包含要显示的标签文本。
行编辑
{
    "name": "Class",
    "trDisplayName": "Class name:",
    "mandatory": true,
    "type": "LineEdit",
    "data": {
        "trPlaceholder": "Fully qualified name, including namespaces",
        "validator": "(?:(?:[a-zA-Z_][a-zA-Z_0-9]*::)*[a-zA-Z_][a-zA-Z_0-9]*|)",
        "completion": "namespaces"
    }
},
{
    "name": "BaseEdit",
    "type": "LineEdit",
    "enabled": "%{JS: value('BaseCB') === '' ? 'true' : 'false'}",
    "mandatory": false,
    "data":
    {
        "trText": "%{BaseCB}",
        "trDisabledText": "%{BaseCB}",
        "completion": "classes"
    }
},- trText指定要显示的可翻译默认文本。
- text指定要显示的非可翻译默认文本。
- trDisabledText指定禁用字段中显示的可翻译文本。
- disabledText指定禁用字段中显示的非可翻译文本。
- completion列出类名行编辑的现有- namespaces和基本类行编辑的现有- classes。此值替换通常可用的此类字段的历史记录补全器。
- trPlaceholder指定可翻译占位符文本。
- placeholder指定非可翻译占位符文本。
- validator指定用于验证行编辑的 QRegularExpression。
- fixup指定用于修正字符串的变量。例如,将行编辑中的第一个字符转换为大写。
- isPassword是一个布尔值,指定行编辑具有密码,该密码将被屏蔽。
- historyId是一个键,指定历史记录补全器的项目列表的名称。此值和- completion是互斥的,因此不要同时设置它们。
- restoreLastHistoryItem是一个布尔值,指定自动将最后的历史项目设置为行编辑中的默认文本。此键只能在- historyId也设置的情况下设置为 true。
路径选择器
{
    "name": "Path",
    "type": "PathChooser",
    "trDisplayName": "Path:",
    "mandatory": true,
    "data":
    {
        "kind": "existingDirectory",
        "basePath": "%{InitialPath}",
        "path": "%{InitialPath}"
    }
},- path指定选定的路径。
- basePath指定相对于查找的基础路径。
- kind定义要查找的内容:- existingDirectory、- directory、- file、- saveFile、- existingCommand、- command或- any。
填充物
{
    "name": "Sp1",
    "type": "Spacer",
    "data":
    {
        "factor": 2
    }
},factor 设置指定了这个填充物的布局间隔乘以的因子(一个整数)。
文本编辑
{
    "name": "TextField",
    "type": "TextEdit",
    "data" :
    {
        "trText": "This is some text",
        "richText": true
    }
}- trText指定要显示的可翻译文本。
- text指定要显示的不可翻译文本。
- trDisabledText指定在文本编辑禁用时要显示的可翻译文本。
- disabledText指定在文本编辑禁用时要显示的不可翻译文本。
- richText设置为- true为富文本,否则为- false。
可用的生成器
Qt Creator 支持两个不同的 JSON 向导生成器。
文件生成器
File 生成器期望在其 data 部分有一个对象列表。每个对象定义一个要处理并复制到 %\{TargetPath\}(或任何其他位置)的文件。
每个文件对象可以采用以下设置
- source指定模板文件的路径和文件名,该文件相对于包含- wizard.json文件的目录。- 如果 - source没有设定,则假定在- target中给出的文件是通过其他某种方式生成的。这在例如,指定在检出版本控制系统中的数据后要打开的项目文件时非常有用。
- target指定生成文件的存放位置,可以是绝对路径,也可以是与- %{TargetPath}的相对路径,它通常由向导的某个页面之一设定。
- openInEditor如果设置为- true,将在适当的编辑器中打开文件。此设置默认为- false。
- openAsProject如果设置为- true,将在 Qt Creator 中打开项目文件。此设置默认为- false。
- isBinary如果设置为- true,将把文件视为二进制文件,并且防止在此文件中进行替换。此设置默认为- false。
- condition如果条件返回- true,则生成文件。此设置默认为- true。有关更多信息,请参阅 在向导中使用变量。
扫描器生成器
Scanner 生成器扫描 %\{TargetPath\} 并生成该路径中找到的所有文件的列表。
Scanner 生成器在其 data 部分使用一个对象,并具有以下设置
- binaryPattern是一个正则表达式,它将与所有找到的文件名进行匹配。任何匹配项都将标记为二进制文件,并跳过此文件的模板替换。此设置默认为空模式,因此不会标记任何文件为二进制。
- subdirectoryPatterns是正则表达式模式列表。任何匹配这些模式之一的目录都将扫描,包括顶级目录。此设置默认为空列表,不会扫描任何子目录。
版权2024 The Qt Company Ltd. 本文档中包含的贡献是各自所有者的版权。提供的文档是根据免费软件基金会发布的GNU自由文档许可协议第1.3版授权的。Qt及相应标志是芬兰及/或其他国家的The Qt Company Ltd.的商标。所有其他商标均属于其各自所有者。