Каков стандартный (Qt) способ создания одного файла ui.qml? - PullRequest
0 голосов
/ 24 мая 2018

В приложении Qt , например , они используют одиночные *.ui.qml файлы форм.Я все понимаю, но я привык к созданию 2 файлов, например, Contact.qml и ContactForm.ui.qml вместо одного ContactForm.ui.qml.Теперь, если я хочу создать такой единственный файл формы, у меня есть / вижу две опции:

  1. При создании стандартного файла QML (Qt Quick 2) , я даюимя и полное расширение .ui.qml.

  2. Я создаю QtQuick Ui File (который создает 2 файла) и удаляю один (бизнес-логический) файл.

Для меня оба варианта кажутся обходными, а не Qt way .Не могли бы вы показать мне Qt way ?

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

(Случайно, вы можете открыть не только .ui.qml, но и любой qml-файл в режиме design , если вы выполняете роли см. Этот пост ).

список мастеров, которые можно увидеть, когда добавляет новые в Creator. Это стандартные мастера, которые Qt, вероятно, считает достаточными и подходящими для общей перспективы.

Qt предлагает решение , хотя... вы можете добавить свой собственный пользовательский мастер в список стандартных мастеров в Qt Creator, следуя документации по Qt Добавление новых пользовательских мастеров процедура создания, так что вы можете добавить больше к существующим мастерам.

Специально для создания .ui.qml (без файла qml) раздел Добавление мастеров на основе JSON в вышеприведенной документации работает просто отлично, например:

  • Запустите Creator из командной строки с подробным параметром : Qt_base\Tools\QtCreator\bin>qtcreator.exe -customwizard-verbose
  • In Инструменты, параметры, клавиатура ... фильтр по Factory.Сброс и заполнить новый ярлык , если он не существует, например Ctrl+Alt+F10
  • в папке C: \ Qt \ Tools \ QtCreator \ share \ qtcreator \ templates \ wizards \ classes ... copyпапка мастера, используемая для создания .ui.qml qtquickui и переименования его на любое имя.
  • Теперь и самое главное, в новой папке отредактируйте файл мастера json настроить новый мастер ..

(1) Дайте новые id следующие роли, описанные в ссылке

(2) в опции удалить опциюдля добавления файла qml вместе с формой.

(3) в поле pages удалите поле, запрашивающее имя файла qml.

(4) в разделе "name": "FormClass", измените "trText": "%{Class}Form" на "trText": "Form"

(5) в Генераторы , удалите генератор файлов qml и сохраните генератор файлов .ui.qml.

  • После завершения редактирования вы можете активировать нового мастера, для этого нажмите созданный выше ярлык (Ctrl+Alt+F10) и все!теперь вы должны увидеть своего нового мастера, когда вы идете Добавить новый в раздел Qt ...

Вот модифицированная версия wizard.json

{
    "version": 1,
    "supportedProjectTypes": [ ],
    "id": "S.QtQuickUi",
    "category": "R.Qt",
    "trDescription": "Creates a Qt Quick Designer UI form along with a matching QML file for implementation purposes. You can add the form and file to an existing Qt Quick Project.",
    "trDisplayName": "QtQuick UI File Only",
    "trDisplayCategory": "Qt",
    "iconText": "ui.qml",
    "featuresRequired": [ "QtSupport.Wizards.FeatureQtQuick.UiFiles" ],
    "enabled": "%{JS: [ %{Plugins} ].indexOf('QmlJSEditor') >= 0}",

    "options" : [
        { "key": "UiFile", "value": "%{FormClass}.%{JS: Util.preferredSuffix('application/x-qt.ui+qml')}" }
    ],

    "pages" :
    [
        {
            "trDisplayName": "Define Class",
            "trShortTitle": "Details",
            "typeId": "Fields",
            "data" :
            [

                {
                    "name": "FormClass",
                    "trDisplayName": "Component form name:",
                    "mandatory": true,
                    "type": "LineEdit",
                    "data": {
                        "validator": "(?:[A-Z_][a-zA-Z_0-9]*|)",
                        "fixup": "%{JS: '%{INPUT}'.charAt(0).toUpperCase() + '%{INPUT}'.slice(1) }",
                        "trText": "Form"
                    }
                },
                {
                    "name": "TargetPath",
                    "type": "PathChooser",
                    "trDisplayName": "Path:",
                    "mandatory": true,
                    "data":
                    {
                        "kind": "existingDirectory",
                        "basePath": "%{InitialPath}",
                        "path": "%{InitialPath}"
                    }
                }
            ]
        },
        {
            "trDisplayName": "Project Management",
            "trShortTitle": "Summary",
            "typeId": "Summary"
        }
    ],
    "generators" :
    [
        {
            "typeId": "File",
            "data": [
                {
                    "source": "fileForm.ui.qml.tpl",
                    "target": "%{TargetPath}/%{UiFile}",
                    "openInEditor": true
                }
            ]
        }
    ]
}
0 голосов
/ 24 мая 2018

Это похоже на отсутствующую функцию в Creator.Перейдите к варианту № 1, так как это менее трудоемко, и сообщите о предложении / ошибке, что должен быть способ создания автономных файлов .ui.qml.

...