据我所知,.qml文件可用于定义UI,它似乎覆盖了ui.qml文件中的任何内容。 那么,ui.qml文件的用途究竟是什么?
我在Qt Creator中使用Qt5。
答案 0 :(得分:26)
存在.ui.qml
文件以帮助Qt Quick Designer。例如,普通QML文件可以包含JavaScript表达式,但Qt Quick Designer难以使用这些表达式。另一方面,简单的QML并不那么困难,并且更接近于等同于.ui
文件的小部件 - 一个详细说明用户界面中的一组项目的文档,而不是它们背后的逻辑。 / p>
功能was proposed several years ago on the blog:
经典的Widget Designer是围绕声明形式和命令式逻辑之间的区别而构建的。声明性表单是可设计的并存储在.ui文件中。
在Qml中,很容易混合声明性代码和命令式代码。如果您向Qml文件添加命令性指令(影响视觉方面),则它们不再是纯粹的声明,并且可视化编辑器中的可视化表示将会中断。可视化编辑器需要一种将可视描述转换回文本描述的方法。对于命令式代码,这通常是不可能的,Qt Quick Designer甚至都没有尝试。
QML Documents文档声明:
从Qt 5.4开始,文档也可以具有文件扩展名“.ui.qml”。 QML引擎处理这些文件,如标准.qml文件,并忽略扩展名的.ui部分。 Qt Creator将这些文件作为Qt Quick Designer的UI表单处理。这些文件只能包含由Qt Creator定义的QML语言的子集。
您可以使用Qt Creator向导创建文件扩展名为.ui.qml的UI表单。 UI表单包含QML语言的纯声明子集。建议您在设计模式下编辑表单。但是,将项目作为别名属性导出是仅限商业用途的功能,因此如果您使用的是Qt Creator的开源版本,则必须使用“编辑”模式执行此操作。 Qt Creator通过显示错误消息来强制使用支持的QML功能。
不支持以下功能:
- JavaScript阻止
- 功能定义
- 函数调用(qsTr除外)
- 除纯表达式之外的其他绑定
- 信号处理程序
- 除根项目以外的其他项目的状态
- 不是从QQuickItem或Item
派生的根项目不支持以下类型:
- 行为
- 结合
- 帆布
- 组件
- 着色器效果
- 定时器
- 变换
- 过渡