Qt5(QML)中ui.qml文件的用途是什么?

use*_*312 16 qt qml

据我所知,.qml文件可用于定义UI,它似乎覆盖了ui.qml文件中的任何内容.那么,ui.qml文件的用途究竟是什么?

我正在使用Qt5和Qt Creator.

Mit*_*tch 26

.ui.qml文件存在以帮助Qt Quick Designer.例如,普通QML文件可以包含JavaScript表达式,但Qt Quick Designer难以使用这些表达式.另一方面,简单的QML并不那么困难,并且更接近于等同于.ui文件的小部件- 一个详细描述用户界面中的一组项目的文档,而不是它们背后的逻辑.

该功能几年前在博客上提出:

经典的Widget Designer是围绕声明形式和命令式逻辑之间的区别而构建的.声明性表单是可设计的并存储在.ui文件中.

在Qml中,很容易混合声明性代码和命令式代码.如果您向Qml文件添加命令性指令(影响视觉方面),则它们不再是纯粹的声明,并且可视化编辑器中的可视化表示将会中断.可视化编辑器需要一种将可视描述转换回文本描述的方法.对于命令式代码,这通常是不可能的,Qt Quick Designer甚至都没有尝试.

QML文件文档指出:

从Qt 5.4开始,文档也​​可以具有文件扩展名".ui.qml".QML引擎处理这些文件,如标准.qml文件,并忽略扩展名的.ui部分.Qt Creator将这些文件作为Qt Quick Designer的UI表单处理.这些文件只能包含Qt Creator定义的QML语言的子集.

Qt快速UI表单:

您可以使用Qt Creator向导创建文件扩展名为.ui.qml的UI表单.UI表单包含QML语言的纯声明子集.建议您在设计模式下编辑表单.但是,将项目作为别名属性导出是仅限商业用途的功能,因此如果您使用的是Qt Creator的开源版本,则必须使用"编辑"模式执行此操作.Qt Creator通过显示错误消息来强制使用支持的QML功能.

不支持以下功能:

  • JavaScript块
  • 功能定义
  • 函数调用(qsTr除外)
  • 其他绑定比纯表达式
  • 信号处理程序
  • 除根项目之外的其他项目中的状态
  • 不是从QQuickItem或Item派生的根项

不支持以下类型:

  • 行为
  • 捆绑
  • 帆布
  • 零件
  • 着色器效果
  • 计时器
  • 转变
  • 过渡