创建单个 ui.qml 文件的标准 (Qt) 方法是什么?



在Qt应用程序示例中,它们使用单个*.ui.qml表单文件。我什么都懂,但我习惯于创建 2 个文件,例如,Contact.qmlContactForm.ui.qml,而不是一个ContactForm.ui.qml。现在,如果我想创建这样一个表单文件,我有/看到两个选项:

  1. 在创建标准QML文件(Qt Quick 2(时,我给出了名称和整个.ui.qml扩展名。

  2. 我创建了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.qmlqtquickui的向导文件夹,并将其重命名为任何名称。
  • 现在也是最重要的,在新文件夹中,编辑向导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 文件。

最新更新