本页内容

自定义向导

如果您有一个团队正在开发大型应用程序或多个应用程序,您可能希望统一团队成员创建项目和文件的方式。

您可以创建 JSON 格式的自定义向导。这些向导存储在向导模板目录中,该目录包含一个名为wizard.json 的 JSON 配置文件以及所需的任何模板文件。配置文件包含多个部分,用于指定向导的相关信息、可用的变量、向导页面以及用于创建文件的生成器。

要创建自定义向导,请将一个模板目录复制到本地用户设置目录下的templates/wizards/ 目录中,并为其重命名。然后在wizard.json 文件中修改向导 ID。

您可以在设置目录中为模板创建一个子目录。Qt Creator 会按类型将标准向导整理到子目录中,但您可以将自己的向导目录添加到任意喜欢的目录中。文件夹层次结构不会影响Qt Creator 显示向导的顺序。

若要与其他用户共享向导,您可以创建向导目录的压缩包,并指导收件人将其解压到Qt Creator 搜索向导的任意目录中。

Qt Creator 系统会在“New Project ”和“New File ”对话框中显示检索到的向导。对于每个向导,系统会显示一个图标 (1)、显示名称 (2) 和描述 (3)。

“新建文件”向导

向导类型

在项目向导中,您可以指定项目所需的文件。您可以添加向导页面,以便开发人员为项目指定设置。

文件向导与此类似,但不包含任何项目文件。

查找向导

Qt Creator 会在以下位置搜索向导:

  • 共享目录中的预定义向导:
    • 在 Windows 上:share\qtcreator\templates\wizards
    • 在 Linux 上:share/qtcreator/templates/wizards
    • 在 macOS 上: Qt Creator.app/Contents/Resources/templates/wizards
  • 本地用户设置目录中的自定义向导:
    • 在 Windows 上:%APPDATA%\QtProject\qtcreator\templates\wizards
    • 在 Linux 和 macOS 上:$HOME/.config/QtProject/qtcreator/templates/wizards

向导开发技巧

为某些辅助操作分配键盘快捷键,并开启详细输出。

将操作映射到键盘快捷键

Qt Creator 包含一些可优化向导开发流程的操作。这些操作默认没有键盘快捷键,因此无法触发。要启用它们,请在Preferences >Environment >Keyboard >Wizard 中为其分配键盘快捷键。

以下操作可协助向导开发:

操作 ID描述
Inspect触发此操作将打开一个窗口,列出触发操作时向导中已定义的所有字段和变量。每次激活此操作都会打开一个新的非模态窗口,因此您可以比较向导不同页面上的状态。
Factory.Reset触发此操作会使Qt Creator 清除所有向导工厂,从而在打开File >New Project 等页面时重新加载所有向导定义。这样,您无需重启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 源代码中的共享目录内。 然后访问Build ,并选择“Run CMake ”。这可确保您为向导添加的新文件,在下次Qt Creator 构建时,会作为Qt Creator 源代码目录的一部分,被复制到Qt Creator 构建目录中。

如果您不运行 CMake,您的新向导将不会显示,因为它在您运行新构建的Qt Creator 的构建目录中并不存在。由于 CMake 没有将源代码树中的新文件通知给构建工具(如 make 或 Ninja),因此这些文件从未被复制到该目录中。

基本上,CMake会生成一个固定的文件列表,用于将源目录中的文件复制到构建目录的子目录中——该子目录会在运行时被检查以查找向导。因此,每当文件的名称或位置发生变化时,您都需要运行CMake或执行Factory.Reset 函数。

在向导中使用变量

您可以在 JSON 配置文件和模板源文件中的字符串内使用变量(%\{<variableName>\} )。向导及其页面预定义了一组变量。您可以在wizard.json 文件的options 部分中定义变量键名和值,以此引入新变量作为后续使用的快捷方式。

有一个特殊变量%\{JS:<JavaScript expression>\} ,它会评估给定的 JavaScript 表达式,并将生成的 JavaScript 值转换为字符串。在 JavaScript 表达式中,您可以通过value('<variableName>') 引用向导定义的变量。返回的 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 二进制文件一同部署。

C++ 类对话框

有关可添加的页面和控件及其支持的属性的更多信息,请参阅“可用页面”和“可用控件”

要创建基于 JSON 的 C++ 类向导:

  1. -customwizard-verbose 参数启动Qt Creator ,以便在向导开发过程中获取反馈。有关详细信息,请参阅“详细输出”
  2. 按照《向导开发技巧》中的说明,为“Inspect ”和“Factory.Reset ”操作设置键盘快捷键。
  3. 复制share/qtcreator/templates/wizards/classes/cpp 并重命名,例如$HOME/.config/QtProject/qtcreator/templates/wizards/classes/mycpp
  4. 使用Factory.Reset 操作,使向导出现在File >New File 中,而无需重启Qt Creator
  5. 打开向导配置文件wizard.json 进行编辑:
    • 以下设置决定了向导的类型及其在New File 对话框中的位置:
      "version": 1,
      "supportedProjectTypes": [ ],
      "id": "A.Class",
      "category": "O.C++",
      • version 是文件内容的版本号。请勿修改此值。
      • supportedProjectTypes 是一个可选设置,用于在向现有项目添加新构建目标时过滤向导。例如,在向现有 qmake 项目添加新目标时,仅显示生成 qmake 项目的向导。

        可能的取值为Qt Creator 支持的构建系统,或者如果未指定构建系统,则为UNKNOWN_PROJECTAutotoolsProjectManager.AutotoolsProjectCMakeProjectManager.CMakeProjectGenericProjectManager.GenericProjectPythonProjectQbs.QbsProjectQt4ProjectManager.Qt4Project (qmake项目),QmlProjectManager.QmlProject

      • id 是您向导的唯一标识符。在category 中,向导会按 ID 按字母顺序排序。您可以使用前缀字母来指定向导的位置。您必须始终更改此值。例如:B.MyClass

        该信息可在向导中通过%\{id\} 获取。

      • category 是向导在列表中所属的类别。您可以在“New File ”对话框中使用前缀字母来指定该类别在列表中的位置。

        此信息可在向导中通过%\{category\} 查看。

    • 以下设置用于指定在“New File ”对话框中显示的图标和文本:
      "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: isPluginRunning('cppeditor')}",
      • trDescription 在选择“trDisplayCategory ”时,该信息会显示在最右侧的面板中。

        该信息在向导中以“%\{trDescription\} ”的形式提供。

      • trDisplayName 在选择“trDisplayCategory ”时,该信息会显示在中间面板中。

        在向导中,此信息显示为“%\{trDisplayName\} ”。

      • trDisplayCategory 该信息显示在“New File ”对话框的“Files and Classes ”下。

        在向导中,此信息显示为“%\{trDisplayCategory\} ”。

      • icon 当选中“trDisplayCategory ”时,该选项会显示在中面板的“trDisplayName ”旁边。建议您指定相对于wizard.json 文件的相对路径,但也可以使用绝对路径。若省略此值,则使用该向导类型的默认图标。
      • iconText 确定默认文件图标的文本叠加内容。
      • iconKind 确定图标是否采用主题样式。
      • image 指定一张图像(例如屏幕截图)的路径,该图像将显示在“trDescription ”下方。
      • featuresRequired 指定向导所依赖的Qt Creator 功能。如果缺少必需的功能,向导将被隐藏。例如,如果没有任何套件设置了 Qt 版本,则基于 qmake 的向导将被隐藏。

        如果您需要表达更复杂的逻辑来决定向导是否可用,请使用enabled

        该信息可在向导中通过%\{RequiredFeatures\} 获取。

      • featuresPreferred 指定要预选的构建和运行套件。

        此信息在向导中显示为“%\{PreferredFeatures\} ”。

      • platformIndependent 如果向导受所有目标平台支持,则该值设置为true 。默认情况下,该值设置为false
      • enabled 在检查完featuresRequired 后,将评估该参数以确定向导是否列在File >New ProjectNew File 中。

        默认值为true

    • options 部分包含一个由具有值属性的对象组成的数组。除了预定义的变量外,您还可以定义自己的变量,并在配置文件和模板源文件中使用。例如,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 指定要使用的页面:FieldsFileFormKitsProjectVcsConfigurationVcsCommandSummary

        代码中使用的完整页面 ID 由typeId 加上前缀"PE.Wizard.Page." 组成。有关这些页面的更多信息,请参阅“可用页面”

      • trDisplayName 指定页面的标题。默认情况下,使用页面标题。
      • trShortTitle 指定向导侧边栏中使用的标题。默认情况下,使用页面标题。
      • trSubTitle 指定页面的副标题。默认情况下,使用页面标题。
      • index 是一个整数值,用于指定页面 ID。若未设置,系统将自动分配。
      • enabled 设置为true 可显示该页面,设置为false 可隐藏该页面。该值仅在创建相应向导时评估一次。
      • skipForSubprojects 可用于跳过向导中的某一页。例如,在处理构建信息时非常有用。该参数仅在创建相应向导页面时评估一次。
      • data 指定向导页面。在 C++ 向导中,它指定一个Fields 页面和一个Summary 页面。Fields 页面包含CheckBoxComboBoxLineEditPathChooserSpacer 控件。有关控件的更多信息,请参阅“可用控件”
    • 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 指定生成器的类型。目前仅支持FileScanner
      • data 允许对生成器进行进一步配置。

向导可用的值

除了从wizard.json 文件本身获取的属性(参见《创建向导》)外,Qt Creator 还为所有基于JSON的向导提供了一些信息:

  • WizardDirwizard.json 文件的绝对路径。
  • Features 列出了通过Qt Creator 中配置的任何套件可用的所有功能。
  • Plugins 包含当前Qt Creator 实例中正在运行的所有插件的列表。
  • Platform 包含在“File >New Project ”或“New File ”对话框中选定的平台。该值可能为空。

仅当用户通过Projects 视图中某个节点的右键菜单触发向导时,才会显示以下信息:

  • InitialPath 包含所选节点的路径。
  • ProjectExplorer.Profile.Ids 列出了为所选节点项目配置的套件列表。

可用页面

您可以通过在wizard.json 文件的pages 部分中指定预定义页面,将其添加到向导中。

字段页面

“字段”页面的typeId 值为Field ,并包含小部件。有关小部件定义的更多信息,请参阅“可用小部件”

"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 值为File 。您可以省略data 键,或将其赋值为空对象。

{
    "trDisplayName": "Location",
    "trShortTitle": "Location",
    "typeId": "File"
},

该页面会根据向导中的InitialFileNameInitialPath 来设置初始路径和文件名。该页面将TargetPath 设置为待创建文件的完整路径。

表单页面

表单页面的typeId 值为Form 。您可以省略data 键,或将其赋值为空对象。

{
    "trDisplayName": "Choose a Form Template",
    "trShortTitle": "Form Template",
    "typeId": "Form"
},

该页面将 `FormContents ` 设置为包含表单内容的字符串数组。

套件

Kits 页面的typeId 值为Kits 。Kits 页面的data 部分包含一个具有以下设置的对象:

  • projectFilePath 包含项目文件的路径。
  • requiredFeatures 包含描述套件必须具备的特征的字符串或对象列表,以使其出现在页面上。

    当检测到字符串时,必须设置该功能。若使用对象代替,则会检查以下设置:

    • feature,该参数必须为字符串(其中所有%\{<VariableName\} 将被展开)。
    • condition,该参数必须评估为truefalse ,可用于将该特征从列表中排除。
  • preferredFeatures 该列表的格式应与requiredFeatures 相同。任何同时满足preferredFeatures 中列出的所有特征(以及requiredFeatures )的套件,都将在本页面上被预先选中。
{
    "trDisplayName": "Kit Selection",
    "trShortTitle": "Kits",
    "typeId": "Kits",
    "data": { "projectFilePath": "%{ProFileName}" }
},

该页面会解析%\{Platform\} ,以设置在File >New ProjectNew File 中选定的平台。

注意:本 页面将skipForSubprojects 设置为true ,以便在不需要该页面时将其隐藏,因为子项目会从其父项目中获取此信息。

项目

“项目”页面的typeId 值为Project 。该页面要么不包含数据,要么包含一个具有trDescription 属性的对象,该属性将在生成的页面上显示。trDescription 的默认值为%\{trDescription\} ,该值由wizard.json 文件中的trDescription 字段中的信息填充。

{
    "trDisplayName": "Project Location",
    "trShortTitle": "Location",
    "typeId": "Project",
    "data": { "trDescription": "A description of the wizard" }
},

该页面通过评估InitialPath 来设置初始项目路径。页面将ProjectDirectoryTargetPath 设置为项目目录。此外,如果该项目被显式添加到另一个项目中,页面会将IsSubproject 设置为 true。在这种情况下,BuildSystem 将被设置为父项目的构建系统。

摘要

“摘要”页面的typeId 值为Summary 。该字段无数据或为空对象。

{
    "trDisplayName": "Project Management",
    "trShortTitle": "Summary",
    "typeId": "Summary"
}

若该项目为顶级项目,该页面将IsSubproject 设置为false ;否则,将其设置为true 。它将VersionControl 设置为所用版本控制系统的ID。

VcsCommand

“VcsCommand”页面用于执行一系列版本控制操作并显示结果。

该页面的data 部分接受一个包含以下键的对象:

  • vcsId 包含要使用的版本控制系统的 ID。
  • trRunMessage 包含版本控制运行期间显示的消息。
  • extraArguments 一个字符串或字符串列表,用于定义传递给版本控制检出命令的额外参数。
  • repository 用于从版本控制系统检出的 URL。
  • baseDirectory 用于执行检出操作的目录。
  • checkoutName 用于存放检出数据的子目录。
  • extraJobs 一个对象列表,用于定义初始检出后要执行的附加命令。这可用于进一步自定义仓库,例如添加额外的远程仓库或设置版本控制系统的配置变量。

    每个 `extraJob ` 由一个包含以下设置的对象定义:

    • skipIfEmpty 若将其设置为true ,则会自动从待执行命令中移除空参数。默认值为true
    • directory 指定要执行的命令的工作目录。默认值为baseDirectory
    • command 指定要执行的命令。
    • arguments 包含要传递给 `command` 的参数。
    • timeOutFactor 延长长期运行命令的默认超时时间。
    • enabled 该表达式将被评估,以决定是否实际执行此作业。

VcsConfiguration

“VcsConfiguration”页面要求用户配置版本控制系统,只有在配置成功后,“Next ”按钮才会启用。

此页面的“data ”部分接受一个包含vcsId 键的对象。此设置定义了将要配置的版本控制系统。

可用控件

您可以在“字段”页面上添加以下控件:

  • 复选框
  • 下拉列表
  • 标签
  • 行编辑
  • 路径选择器
  • 间隔符
  • 文本编辑

注意:向导 仅支持以下各节中记录的设置。

为每个控件指定以下设置:

  • name 指定控件名称。该名称将作为变量名,用于后续访问该值。
  • trDisplayName 指定在用户界面中显示的标签文本(如果span 不为true )。
  • type 指定控件的类型:CheckBoxComboBoxLabelLineEditPathChooserSpacer 以及TextEdit
  • trToolTip 指定当鼠标悬停在该字段上时显示的工具提示。
  • isComplete 该表达式将针对所有字段进行评估,以决定向导中的“Next ”按钮是否可用。要使该按钮可用,所有字段的“isComplete ”必须评估为true 。此设置的默认值为true
  • trIncompleteMessage 当字段的isComplete 评估结果为false 时,该选项将显示。
  • persistenceKey 使用户的选择持久化。该值被视为设置键。如果用户更改了控件的默认值,则会存储用户的值,并在下次运行向导时将其设为新的默认值。
  • visible 如果控件可见,则该值设置为true ;否则设置为false 。默认情况下,该值设置为true
  • enabled 如果控件处于启用状态,则该属性设置为true ;否则设置为false 。默认情况下,该属性设置为true
  • mandatory 如果该控件必须具有值才能使“Next ”按钮启用,则该属性将设置为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 对象,请定义trKeyvalue 配对,其中trKey 是用户可见的列表项,value 包含与该项关联的数据。此外,您可以使用icon 为列表项指定图标,并使用trToolTip 为其指定工具提示。
  • index 指定在列表类型启用时要选中的索引。默认情况下,该值设置为0
  • disabledIndex 指定在列表类型禁用时显示的索引。

Label

{
    "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 定义要查找的内容:existingDirectorydirectoryfilesaveFileexistingCommandcommandany

间隔符

{
    "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 是一组正则表达式模式的列表。任何匹配这些模式之一的目录都将被扫描,同时也会扫描顶级目录。此设置默认值为空列表,因此不会扫描任何子目录。

Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.