henreash的专栏

熟悉的概念

Extending QML Functionalities using C++以及Integrating QML Code with existing Qt UI code

有三不同种结构的QWidget:

简单部件

QDeclarativeButton

实现了.

,,

.

QTextControl, QDeclarativeWebView构建于QWebPage,ListView,

父部件

,).QScrollArea

组合部件

QML项和QGraphicWidget的主要不同点是使用方式.技术实现大致相同的,但实际上QML元素是可声明和可组合的,而QGraphicWidget是一个基本元素,用于协调QGraphicScene和部件.QML项和QGraphicWidget都从QGraphicsObject继承,可以共存.在布局系统中和与其他组件交互上是不同的.注意QGraphicWidget更倾向于要求在一个包中定义,而与QGraphicWidget等价的QML项可能由跨多个QML文件的QML项组合而成,但还是可以加载到C++的单个QGraphicsObject对象中.

QGraphicsWidget通常使用QGraphicLayout来布局.QML不使用QGraphicLayout,因为Qt的布局对动画和UI的流畅性不太友好,因此几何上的接口是主要的不同点.当定义QML元素时,允许设计者使用绝对几何位置,绑定或描点(从QDeclarativeItem继承而来)定位其外边框,而不是使用布局或指定尺寸.如果适合指定尺寸就将其放置在QML文档中,让设计者知道如何更好的使用这个元素,但仍可完全控制界面外观.

其他主要不同在于QGraphicWidget用于布局模型,其具有独立的UI和逻辑.相反,QML实体通常是具有单一目标的项,不会在所有者中履行用户用例,而是在QML文件中组成等价的部件,要避免在项定义中涉及UI逻辑和组成可视化元素.而是尝试定义更加通用的实体,以便于在QML中定义界面外观(包括UI逻辑).

这两点不同决定了不同的交互方式.的子类用于在QML中定义流畅的UI界面.因此主要的不同是其暴露的接口,及设计时与其交互的对象(为QML声明实体,QGraphicWidget则不用如此,因为你需要在子类中定义UI逻辑)

如果希望同时使用QML和C++定义UI,例如要进行过度,推荐使用

,使用双手头脑与心灵的是艺术家,只有合作双手

henreash的专栏

相关文章:

你感兴趣的文章:

标签云: