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

时间:2015-06-04 19:30:21

标签: qt qml

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

我在Qt Creator中使用Qt5。

1 个答案:

答案 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 Quick UI Forms

  

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

     

不支持以下功能:

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

不支持以下类型:

     
      
  • 行为
  •   
  • 结合
  •   
  • 帆布
  •   
  • 组件
  •   
  • 着色器效果
  •   
  • 定时器
  •   
  • 变换
  •   
  • 过渡
  •