Qt Creator 添加基於 JSON 的嚮導

Qt Creator 添加基於 JSON 的嚮導

本文翻譯自:https://doc.qt.io/qtcreator/creator-project-wizards-json.html

Qt Creator 會在系統共享目錄以及用戶設置文件夾中查找嚮導模板,就像在查找嚮導模板位置所說的那樣。

基於 JSON 的嚮導模板所在的文件夾中包含一個名爲wizard.json 的 JSON 配置文件以及所需的模板文件。配置文件包含了嚮導特有的信息:使用的變量、嚮導頁以及創建文件用到的生成器。

爲了建立一個自定義的嚮導模板,你可以把一個模板文件夾換個名字拷貝到系統共享目錄或用戶設置文件夾中。如果你想用 qmake 來創建嚮導並將嚮導與 Qt Creator 集成,請複製到系統共享文件夾中。此外你也可以在用戶設置文件夾下創建子目錄。標準的嚮導根據類型歸類在子文件夾中,但你也可以把你的嚮導文件夾添加到任何你喜歡的文件夾中。文件夾的層級不影響嚮導顯示的順序。

爲了與其他用戶分享您的嚮導模板,你可以創建一個嚮導文件夾的壓縮文件並提示使用者將這個壓縮文件解壓到 Qt Creator 搜索嚮導的目錄中。

爲了便於嚮導的開發,我們建議您在啓動 Qt Creator 時使用 -customwizard-verbose 參數,以接收 Qt Creator 找到並解析 wizard.json 文件時發出的確認信息。詳細模式會顯示出語法錯誤的信息,這是您在編輯嚮導時最容易遇到的錯誤。更多有關詳細模式的信息,請查看詳細輸出

另外,爲 InspectFactory.Reset 設置快捷鍵可以開啓嚮導中字段與變量的檢查以及能夠在不重啓 Qt Creator 的情況下使嚮導能在 File > New File or Project 中被列出。更多有關信息,請查看嚮導開發的一些技巧

Qt Creator 會把它找到的嚮導顯示在 New File or Project 對話框中。每個嚮導都會顯示圖標(1)、名字(2)以及相關的描述信息(3)。

qt-creator-wizard

把嚮導集成在 Qt Creator 中

爲了將嚮導集成在 Qt Creator 中並將它作爲 Qt Creator 的一部分進行發佈,你需要把嚮導文件放在 Qt Creator 源碼中。之後選擇 Build > Run qmake 這樣你新添加的嚮導文件就從 Qt Creator 源文件夾複製到 Qt Creator 構建文件夾中並作爲下一版 Qt Creator 的一部分了。

如果你沒有運行 qmake,那你的新嚮導將無法顯示,因爲它並沒有存在於你運行的新構建的 Qt Creator 的構建文件夾中,qmake 沒有通知 make 最近有新的文件加入。

一般來說,qmake 會爲從源文件夾複製到構建文件夾中的子文件夾(在運行時檢查是否存在嚮導的子文件夾)下的文件生成一個固定的列表。因此每次這些文件的名字或位置變化後,你都需要運行 qmake 或執行 **Factory.Reset **。

在嚮導中使用變量

你可以在字符串、JSON 配置文件、模板源文件中使用變量 (%\{<variableName>\})。嚮導中已經預定義了一些變量。你可以在 wizard.json 文件中的 options 部分通過定義變量的鍵名和值,來引入新變量以便之後使用。

有一類特殊的變量 %\{JS:<JavaScript expression>\} ,它會對給出的 JavaScript 表達式求值並將結果轉化爲字符串。在 JavaScript 表達式中你可以使用嚮導中通過 value('<variableName>') 形式定義的變量。返回的 JavaScript 對象的類型爲該變量的值的類型,可以是字符串、列表、字典或布爾值。

當期望得到布爾值時卻得到一個字符串是很常見的,空字符串以及字符串 "false" 會被視爲 false 剩下其他的都將被視爲 true

嚮導的本地化

如果一個設置的名字以 tr 前綴開始,它的值是用戶可見的並會被翻譯。如果這個新的嚮導包含在 Qt Creator 源代碼中,這些可翻譯的字符串會出現在 Qt Creator 翻譯文件中並能作爲 Qt Creator 的一部分被翻譯。另一種方式是,你可以把翻譯以下面的語法寫在 .json 文件中:

"trDisplayName": { "C": "default", "en_US": "english", "de_DE": "deutsch" }

例如:

"trDisplayName": { "C": "Project Location", "en_US": "Project Location", "de_DE": "Projekt Verzeichnis" }

創建嚮導

Qt Creator 中有添加類、文件以及工程的嚮導。你可以在它們的基礎上來創建你自己的嚮導。我們使用 C++ 嚮導來說明創建嚮導的流程以及 .json 文件中的片段和設置的含義。

在此示例中,我們在共享目錄中創建嚮導文件夾,並將其集成到 Qt Creator 構建系統中,這樣它可以作爲構建的一部分隨着 Qt Creator 二進制文件一起被部署。

img

有關可以添加的頁面和小部件及其支持的屬性的更多信息,請參見可用頁面可用窗體小部件

創建一個基於 JSON 的 C++ 類嚮導的步驟:

  1. -customwizard-verbose 參數啓動 Qt Creator,以便於在嚮導開發過程中接收反饋。更多的信息請查看詳細輸出

  2. 爲 Inspect 和 Factory.Reset 設置快捷鍵,就像嚮導開發的一些技巧中說的那樣。

  3. 複製 share/qtcreator/templates/wizards/classes/cpp 並把它重命名。例如:share/qtcreator/templates/wizards/classes/mycpp

  4. 使用 Factory.Reset 讓嚮導在 File > New File or Project 中顯示而不用重啓 Qt Creator。

  5. 打開向導配置文件 wizard.json 並編輯:

    • 下面的這些設置確定嚮導的類型以及嚮導顯示在 New File or Project 對話框中的位置:

      "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 project)
        • QmlProjectManager.QmlProject
      • id 是你的嚮導的唯一識別符。嚮導們在 category 中根據 id 的字母序排列。你可以用一個前導字母來指定向導所在的位置。你必須始終更改這個值。例如:B.MyClass。

        該信息在嚮導中可以通過 %\{id\} 獲得。

      • category 是將嚮導存放在列表中的類別。您可以使用前導字母來指定在 New File or Project 對話框中類別在列表中的位置

        該信息在嚮導中可以通過 %\{category\} 獲得。

    • 下面的設置指定了顯示在 New File or Project 對話框中的圖標和文字:

      "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++",
      "icon": "../../global/genericfilewizard.png",
      "enabled": "%{JS: value('Plugins').indexOf('CppEditor') >= 0}",
      
      • trDescription :當 trDisplayCategory 被選擇後,trDescription 顯示在最右邊的面板中。

        該信息在嚮導中可以通過 %\{trDescription\} 獲取。

      • trDisplayName :當 trDisplayCategory 被選擇後,trDisplayName 顯示在中間的面板中。

        該信息在嚮導中可以通過 %\{trDisplayName\} 獲取。

      • trDisplayCategory 顯示在 New File or Project 對話框中的 Projects 下面。

        該信息在嚮導中可以通過 %\{trDisplayCategory\} 獲取。

      • icon :當 trDisplayCategory 被選擇後,在中間的面板上,icon 顯示在 trDisplayName 的邊上。我們建議您指定與 wizard.json 相對的路徑,但你也可以使用絕對路徑。

      • image 指定一個到圖片的路徑(例如一個截圖),該圖片顯示在 trDescription 的下面。

      • featuresRequired 指定該向導所依賴的 Qt Creator 特性。如果一個所需的特性缺失,該向導會被隱藏。例如:如果沒有一個構建套件有所需的 Qt 版本,那麼基於 qmake 的嚮導將被隱藏。

        請使用 enabled 如果你需要表達更復雜的邏輯來決定你的嚮導是否可用。

        該信息在嚮導中可通過 %\{RequiredFeatures\} 獲取。

      • featuresPreferred 指定默認的構建(build)及運行(run)的套件(kits)。

        該信息在嚮導中可通過 %\{PreferredFeatures\} 獲取。

      • platformIndependent 被設爲 true 如果嚮導支持所有的平臺。默認設爲 false

      • enable 能在 featuresRequired 檢查完後決定一個嚮導能否被列在 Files > New File or Project 中。

        默認值是 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') === 'QDeclarativeItem' || value('Base') === 'QQuickItem' ) ? 'true' : 'false'}" },
          { "key": "GUARD", "value": "%{JS: Cpp.classToHeaderGuard(value('Class'), Util.suffix(value('HdrFileName'))}" },
          { "key": "SharedDataInit", "value": "%{JS: value('IncludeQSharedData') ? 'data(new %{CN}Data)' : '' }" }
      ],
      

      這部分是可選的。更多有關變量的例子,請查看其他嚮導中的 wizard.json 文件。

    • page 部分指定了嚮導頁。嚮導頁的使用取決於嚮導的類型。你可以向嚮導中添加標準頁或使用可用的窗體部件創建新頁。下面的設置指定了顯示的姓名、標題以及頁類型:

      "pages":
      [
          {
              "trDisplayName": "Define Class",
              "trShortTitle": "Details",
              "typeId": "Fields",
              "data" :
              [
                  {
                      "name": "Class",
                      "trDisplayName": "Class name:",
                      "mandatory": true,
                      "type": "LineEdit",
                      "data": { "validator": "(?:(?:[a-zA-Z_][a-zA-Z_0-9]*::)+[a-zA-Z_][a-zA-Z_0-9]*|)" }
                  },
                  ...
      ]
      
      • typeId 指定了頁用在哪裏:: Fields, File, Form, Kits, Project, VcsConfiguration, VcsCommand 還是 Summary

        在代碼中使用的頁ID的全稱,由 typeId 前綴以及 "PE.Wizard.Page." 組合而成。

        更多有關頁面的信息請查看可用頁面

      • trDisplayName 指定了頁面標題。默認情況下,使用頁面標題。

      • trShortTitle 指定向導側邊欄的標題。默認情況下,使用頁面標題。

      • trSubTitle 指定頁面的副標題。默認情況下,使用頁面標題。

      • index 是一個指定頁面 ID 的整數值。如果不設置,會自動分配值。

      • enabledtrue 時顯示頁面,爲 false 時隱藏頁面。

      • data 指定了嚮導頁面的內容。在 C++ 嚮導中,它指定了一個 Fields 頁和一個 Summary 頁。 Fields 頁包含了 CheckBox, ComboBox, LineEdit, PathChooser, 以及 Spacer 窗體部件。更多有關窗體小部件的信息,請查看可用窗體小部件

    • generators 部分指定了添加到項目中的文件:

    "generators":
    [
        {
            "typeId": "File",
            "data":
            [
                {
                    "source": "file.h",
                    "target": "%{HdrPath}",
                    "openInEditor": true
                },
                {
                    "source": "file.cpp",
                    "target": "%{SrcPath}",
                    "openInEditor": true
                }
    ]
    
    • typeId 指定了生成器的類型。當前只支持 FileScanner 生成器。

    • data 允許進一步設置生成器。

嚮導中可用的值

除了 wizard.json 文件自帶的屬性(見創建嚮導部分),Qt Creator 中有一些信息是所有基於 JSON 的嚮導都可用的。

  • WizardDirwizard.json 文件的絕對路徑。
  • Features 列出了通過Qt Creator配置好的任何構建套件所有可用的特性
  • Plugins 包含在 Qt Creator 當前實例中運行的所有插件的列表。
  • Platform包含在 File > New File or Project 對話框中選擇的平臺。該值可以爲空。

下面的信息只有當嚮導被 Projects 視圖中的上下文菜單結點激活時纔可用:

  • InitialPath 到被選擇的結點的路徑。
  • ProjectExplorer.Profile.Ids 包含了爲被選擇結點所在的項目配置的一系列構建套件。

可用頁面

你可以在 wizard.json文件的 page 部分添加預定義的頁到你的嚮導中

域頁面

一個域頁面的 typeId 值爲 Field 幷包含窗口小部件。更多有關小部件的定義,請看可用窗體小部件

"pages":
[
    {
        "trDisplayName": "Define Class",
        "trShortTitle": "Details",
        "typeId": "Fields",
        "data" :
        [
            {
                "name": "Class",
                "trDisplayName": "Class name:",
                "mandatory": true,
                "type": "LineEdit",
                "data": { "validator": "(?:(?:[a-zA-Z_][a-zA-Z_0-9]*::)+[a-zA-Z_][a-zA-Z_0-9]*|)" }
            },
            ...
],

文件頁

一個文件頁的 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 設置爲一個帶有表內容的字符串數組。

構建套件頁

一個構建套件頁的 typeId 值爲 Kits。一個構建套件頁的 data 部分包含了一個有下列設置項的對象:

  • projectFilePath :到項目文件的路徑。

  • requiredFeatures :一系列字符串或對象,描述一個被列在頁面中的構建套件必須提供的特性。

    當該設置項填有字符串,則該特性必須被設置。當使用一個已經安裝的對象,會檢查下列設置項:

    • ``feature:必須是一個字符串(其包含的%{<VariableName}` 會被展開)。
    • condition:必須能被求值爲 truefalse ,可用於關閉列表中的特性
  • preferredFeatures :與 requiredFeatures 要求的格式一樣。任何滿足所有在 preferredFeatures 中列出的條件(也要滿足requiredFeatures)的構建套件 將在本頁被預選中。

{
    "trDisplayName": "Kit Selection",
    "trShortTitle": "Kits",
    "typeId": "Kits",
    "enabled": "%{IsTopLevelProject}",
    "data": { "projectFilePath": "%{ProFileName}" }
},

該頁用 %\{Platform\} 來設置在 File > New File or Project 中選擇的平臺。

工程頁

一個工程頁的 typeId 值爲 Project。它不包含 data 或者在 data 中只包含一個將要顯示在生成的頁面上的 trDescription 屬性對象 。 trDescription 默認值爲 %\{trDescription\},即 wizard.json 文件中的 trDescription 域填充的信息。

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

該頁面用 InitialPath 的值來設置工程的初始路徑。該頁面設置 ProjectDirectoryTargetPath 爲項目文件夾

總覽頁

一個總覽頁的 typeId 的值爲 Summary。它不包含 datadata 中只含有一個空對象。

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

如果這是一個頂層工程則設置 IsSubproject 爲空字符串,如果是子工程則設爲 yes。設置 VersionControl 爲用到的版本控制系統的 ID 。

版本控制系統命令頁

該頁設置一些版本控制操作並顯示結果。

該頁的 data 部分是一個有以下鍵的對象:

  • vcsId 所用到的版本控制系統的 id 。

  • trRunMessage:當版本控制系統運行時顯示的消息。

  • extraArguments:傳給版本控制的 checkout 命令的由一個字符串或一組字符串組成的額外的參數。

  • repository:從版本控制系統檢出的URL。

  • baseDirectory:在該文件夾運行檢出操作。

  • checkoutName:創建子文件夾用於存放檢出的數據

  • extraJobs:定義一系列在初始化檢出操作後運行的額外命令的對象 。這可以用來在初始化之後自定義倉庫 ,例如添加額外的遠程倉庫或設置版本控制系統的配置變量。

    每個 extraJob 由擁有以下設置項的對象定義:

    • skipIfEmpty:如果設置爲 true 空參數將會被靜默地從要執行的命令中刪除。默認爲 true
    • directory:將要運行的命令所在的文件夾。默認值爲 baseDirectory
    • command:將要運行的命令。
    • arguments:傳遞給 command 的參數。
    • timeOutFactor: 爲運行長命令提供比默認超時時間更長的運行時間。
    • enabled:用來決定是不是要運行這個任務。

版本控制系統配置頁

該頁要求用戶配置一個版本控制系統並且只有在配置成功後才啓用 Next 按鈕。

該頁的 data 部分有一個 vcsId 鍵的對象。它定義將要被配置使用版本控制系統。

可用窗體小部件

你可以添加下列小部件到一個域頁面:

  • 複選框(Check Box)
  • 組合框(Combo Box)
  • 標籤(Label)
  • 行編輯器(Line Edit)
  • 路徑選擇器(Path Chooser)
  • 間隔器(Spacer)
  • 文本編輯器(Text Edit)

注意: 嚮導支持只支持下面提及的設置項。

爲每個窗口小部件指定設置項:

  • name:指定窗口小部件的名字。這個名字作爲變量名使用,用於獲取值。
  • trDisplayName:指定 UI 上顯示的標籤文字(如果 span 不爲 true)。
  • type:指定小部件的類型:CheckBox, ComboBox, Label, LineEdit, PathChooser, Spacer, 和 TextEdit
  • trToolTip:指定一個工具提示,當鼠標懸浮在相應區域時會顯示。
  • isComplete:用於決定向導的 Next 按鈕可用或不可用。所有的域必須把他們的 isComplete 設爲 true 以使 Next 按鈕可用。該項設置默認爲 true
  • trIncompleteMessage:當域的 isCompletefalse 時顯示該消息。
  • data:指定小部件的設置項:
    • visible:當小部件可見時爲 true,否則爲 false。默認爲 true
    • enabled:當小部件啓用時爲 true,否則爲 false。默認爲 true
    • mandatory:如果小部件必須要有一個值才能開啓 Next 按鈕時爲 true。默認爲 true
    • span:用於隱藏標籤並擴展表格。默認爲 false。更多信息請看在嚮導中使用變量

對於特定小部件的額外設置項在下面進行說明。

複選框(Check Box)

{
    "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

列表(List)

注意: 組合框(Combo Box)以及圖標列表(Icon List)類型都是列表類型的變種,因此他們有同樣的屬性。

{
    "name": "BaseCB",
    "trDisplayName": "Base class:",
    "type": "ComboBox",
    "data":
    {
        "items": [ { "trKey": "<Custom>", "value": "" },
                   "QObject", "QWidget", "QMainWindow", "QDeclarativeItem", "QQuickItem" ]
    }
},

{
    "name": "ChosenBuildSystem",
    "trDisplayName": "Choose your build system:",
    "type": "IconList",
    "data":
    {
        "items": [
            { "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:包含要顯示的標籤文字。

行編輯器(Line Edit)

{
    "name": "Class",
    "trDisplayName": "Class name:",
    "mandatory": true,
    "type": "LineEdit",
    "data": { "validator": "(?:(?:[a-zA-Z_][a-zA-Z_0-9]*::)+[a-zA-Z_][a-zA-Z_0-9]*|)" }
},
{
    "name": "BaseEdit",
    "type": "LineEdit",
    "enabled": "%{JS: value('BaseCB') === '' ? 'true' : 'false'}",
    "mandatory": false,
    "data":
    {
        "trText": "%{BaseCB}",
        "trDisabledText": "%{BaseCB}"
    }
},
  • trText:指定了要顯示的默認文字。
  • trDisabledText:指定了在禁用部分展示的文字。
  • trPlaceholder:指定佔位符。
  • validator:指定一個 QRegularExpression 來驗證行編輯器的輸入內容。
  • fixup:指定一個用於改進字符串的變量。例如:把行編輯器中的第一個字母改爲大寫。
  • isPassword:一個布爾值,用於指定行編輯器是否包含密碼,如果是則輸入會被掩蓋。

路徑選擇器(Path Chooser)

{
    "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

間隔器(Spacer)

{
    "name": "Sp1",
    "type": "Spacer",
    "data":
    {
        "factor": 2
    }
},

factor 設置項爲該間隔器指定要乘以佈局間距的因子(整數)

文本編輯器(Text Edit)

{
    "name": "TextField",
    "type": "TextEdit",
    "data" :
    {
        "trText": "This is some text",
        "richText": true
    }
}
  • trText:用於指定文本是否顯示。
  • trDisabledText:用於指定當文本編輯器被禁用時顯示的文本。
  • richText:設爲 true 時支持富文本,設爲 false 則不支持富文本。

可用的生成器

對於 JSON 嚮導,Qt Creator 支持兩種不同的生成器。

文件生成器

一個文件生成器期望它的 data 域中有一系列對象,每個對象定義一個要被處理並複製到 %\{TargetPath\} (或其他任何位置)的文件。

每個文件對象有以下設置項:

  • source 指定模板文件相對於 wizard.json 文件所在目錄的路徑和文件名。

    如果沒有設置 source ,那麼將假設由 target 給出文件名的文件被通過其他方式生成。這很有用,例如:在從版本控制系統檢出數據後指定正確的文件作爲項目打開。

  • target 指定生成文件的位置,絕對路徑和相對於 %{TargetPath} 的路徑都可以,通常在某一向導頁中被設置。

  • openInEditor 如果設爲 true 則用合適的編輯器打開文件。默認爲 false

  • openAsProject 如果設置爲 true 則在 Qt Creator 中打開項目文件。默認爲 false

  • isBinary 如果設爲 true 則把文件作爲二進制對待,並防止替換的發生。默認爲 false

  • condition 如果 condition 返回 true 則生成文件。默認爲 true。更多有關信息,請查看在嚮導中使用變量

掃描生成器

一個掃描生成器掃描 %\{TargetPath\} ,併產生從那發現的一系列文件。

掃描生成器在它的 data 域中需要一個有以下設置的對象:

  • binaryPattern 是一個用於匹配所有發現的文件名的正則表達式。任何匹配到的文件將被標記爲二進制文件,模板替代將跳過這個文件。默認爲空,所以沒有文件會被標記爲二進制文件。
  • subdirectoryPatterns 是一系列正則表達式模板。任何與其中任意一個模板匹配的文件夾將與頂級文件夾一樣被掃描 。默認爲空,所以沒有子文件夾被掃描。

歡迎關注我的公衆號:江達小記

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章