在Qt应用程序示例中,它们使用单个*.ui.qml
表单文件。我什么都懂,但我习惯于创建 2 个文件,例如,Contact.qml
和ContactForm.ui.qml
,而不是一个ContactForm.ui.qml
。现在,如果我想创建这样一个表单文件,我有/看到两个选项:
-
在创建标准QML文件(Qt Quick 2(时,我给出了名称和整个
.ui.qml
扩展名。 -
我创建了QtQuick Ui文件(创建 2 个文件(并删除了一个(业务逻辑(文件。
对我来说,这两种选择似乎都是解决方法,而不是Qt方式。你能告诉我Qt的方式吗?
(随意地,如果您按照角色进行操作,您不仅可以在设计模式下打开.ui.qml
还可以打开任何 qml 文件,请参阅这篇文章(。
在Creator中添加新向导时看到的向导列表是Qt可能认为足够且适合一般观点的标准向导。
Qt提供了一个解决方案...您可以按照Qt文档添加新自定义向导创建过程将自己的自定义向导添加到Qt Creator中的标准向导列表中,以便您可以向现有向导添加更多向导。
特别是对于仅.ui.qml
(没有 qml 文件(的创建,上述文档中的添加基于 JSON 的向导部分工作得很好,例如:
-
使用详细选项从命令行启动创建器:
Qt_baseToolsQtCreatorbin>qtcreator.exe -customwizard-verbose
- 在工具、选项、键盘...按工厂过滤。重置并填充一个新的快捷方式(如果不存在(,例如
Ctrl+Alt+F10
- 在文件夹C:\Qt\Tools\QtCreator\share\qtcreator\templates\wizards\classes...复制用于创建
.ui.qml
qtquickui的向导文件夹,并将其重命名为任何名称。 - 现在也是最重要的,在新文件夹中,编辑向导json文件以自定义您的新向导。
(1( 为链接中所述的以下角色提供新id
(2(在选项下,删除用于将QML文件与表单一起添加的选项。
(3( 在"页面"下,删除提示输入 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
}
]
}
]
}
这似乎是 Creator 中缺少的功能。使用选项 #1,因为它工作量更少,并报告一个建议/错误,即应该有一种方法来创建独立的 .ui.qml 文件。