Meego之QtDeclarative Module

首先附上Meego操作系统概述

QML已经基本了解,接下来开始学QtDeclarative.

Qt Quick (Qt User Interface Creation Kit)是一种高级用户界面技术,开发人员和设计人员可用它协同创建动画触摸式用户界面和应用程序。
Qt Quick 包含 QtDeclarative C++ 模块, QML(Qt Meta-Object Language),以及它们集成到Qt Creator IDE中的部分。在Qt应用程序中通过使用QtDeclarative C++模块,程序可以方便地和QML文件进行交互.

Qt Quick 包含:
    * QML:像 JavaScript 一样的声明式语言
    * Qt Creator:在 Qt IDE* 中的直观工具
    * Qt Declarative:强大的 C++ 模块

 

Qt Declarative模块提供了一个declarative框架用于创建高动态的用户界面。我们可以用QtDeclarative C++模块加载QML文件到QT应用并与QML交互.

在Qt应用中加入此模块支持,需要在.pro文件中加入
Qt += declarative
在.cpp文件中加入:
#include <QtDeclarative>

 

=========================================================================================

 

1、QDeclarativeComponent类封装了QML组件的定义.Components是重用的,封装了QML元素的接口.
一个DeclarativeComponent 实例能够从QML创建。

QDeclarativeComponent有三个构造函数:

QDeclarativeComponent ( QDeclarativeEngine * engine, QObject * parent = 0 )
QDeclarativeComponent ( QDeclarativeEngine * engine, const QString & fileName, QObject * parent = 0 )
QDeclarativeComponent ( QDeclarativeEngine * engine, const QUrl & url, QObject * parent = 0 )

一个枚举类型:

enum QDeclarativeComponent::Status

QDeclarativeComponent::Null    0    This QDeclarativeComponent has no data.  loadUrl() or setData() to add QML content.
QDeclarativeComponent::Ready    1    This QDeclarativeComponent is ready and create() may be called.
QDeclarativeComponent::Loading    2    This QDeclarativeComponent is loading network data.
QDeclarativeComponent::Error    3    An error has occurred. Call errors() to retrieve a list of {QDeclarativeError}{errors}.

 

三个主要属性;

progress : const qreal
status : const Status
url : const QUrl

 

=========================================================================================


2、QDeclarativeEngine提供了一个实例化QML组件的环境。

    每个QML组件被QdeclarativeContext实例化,QDeclarativeContext是传送数据到QML组件必要的类。在QML中,上下文context被放在最高层次其被QDeclarativeEngine管理。

   创建任何QML组件之前,应用程序必须首先创建一个QDeclarativeEngine实例用于访问QML上下文。

  

 

=========================================================================================

 

3、QDeclarativeContext

     QDeclarativeContext 类用于定义QML的上下文Context。上下文允许数据暴露给被QML engine实例化的QML组件。可以共过QDeclarativeContext::setContextProperty()设置或更新组件的属性.

QDeclarativeContext ( QDeclarativeEngine * engine, QObject * parent = 0 )
QDeclarativeContext ( QDeclarativeContext * parentContext, QObject * parent = 0 )
void    setContextObject ( QObject * object )
void    setContextProperty ( const QString & name, QObject * value )
void    setContextProperty ( const QString & name, const QVariant & value )

 

=========================================================================================

 

4、QDeclarativeView

     QDeclarativeView提供了一个显示 Qt Declarative用户界面的widget。使QDeclaraitem能够标准的QGraphicsScene和QGraphicsView显示。QDeclarativeView是QGraphicsView的子类能更便捷的显示QML界面,并且连接着QML和Qt对象。

注意需要将main.qml拷贝到编译目录下,或可以使用资源文件(程序可以帮你拷贝qml文件):

view.setSource(QUrl("qrc:/ui/qml/MyRect.qml"));

当使用QDeclarative加载QML时,可以使用statusChanged()信号获取加载状态

QDeclarativeView::Null        0    source没有指定
QDeclarativeView::Ready        1    QML已经被加载并且创建QML组件
QDeclarativeView::Loading    2    正在加载数据
QDeclarativeView::Error        3    发生了错误,可以调用errorDescription()获取错误描述信息

 

=========================================================================================


5、QDeclarativeItem

     QDeclarativeItem提供了QML中最基本的可视化组件。Qt Declarative中所有的组件都继承自QDeclarativeItem,虽然QDeclarativeItem没有可视化界面,但是它定义了所有组件的基本属性。在QML中表示为Item组件.我们可以通过继承此类自定义可视化组件。

查找QML中的组件

注意在C++代码中是使用objectName进行查找而不是id

 

=========================================================================================

 

6、QtDeclarativePropertyMap

      QtDeclarativePropertyMap类让你能通过键值对方便的在C++中组件绑定QML属性。

      它包含一个Signal:

       void    valueChanged ( const QString & key, const QVariant & value )

       

     

 

=========================================================================================

 

7、QDeclarativeExpression

      QDeclarativeExpression 类用于封装javascript代码在QML 上下文中

 

 

QML与C++交互我在前面已经详细写了 :http://blog.csdn.net/liuhongwei123888/archive/2010/12/05/6056338.aspx

一直在等待N9,希望Nokia能尽快。

为了使更多的Qt初学者能尽快入门Qt,也为了QtQt Creator的快速普及,我们花费大量精力写出了这一系列教程。虽然教程的知识可能很浅显,虽然教程的语言可能不规范,但是它却被数十万网友所认可。我们会将这一系列教程一直写下去,它将涉及Qt的方方面面 一、Qt Creator的安装和hello world程序的编写 二、Qt Creator编写多窗口程序 三、Qt Creator登录对话框 四、Qt Creator添加菜单图标 五、Qt Creator布局管理器的使用 六、Qt Creator实现文本编辑 七、Qt Creator实现文本查找 八、Qt Creator实现状态栏显示 九、Qt Creator中鼠标键盘事件的处理实现自定义鼠标指针 十、Qt Creator中实现定时器和产生随机数 十一、Qt 2D绘图(一)绘制简单图形 十二、Qt 2D绘图(二)渐变填充 十三、Qt 2D绘图(三)绘制文字 十四、Qt 2D绘图(四)绘制路径 十五、Qt 2D绘图(五)显示图片 十六、Qt 2D绘图(六)坐标系统 十七、Qt 2D绘图(七)Qt坐标系统深入 十八、Qt 2D绘图(八)涂鸦板 十九、Qt 2D绘图(九)双缓冲绘图简介 二十、Qt 2D绘图(十)图形视图框架简介 二十一、Qt数据库(一)简介 二十二、Qt数据库(二)添加MySQL数据库驱动插件 二十三、Qt数据库(三)利用QSqlQuery类执行SQL语句(一) 二十四、Qt数据库(四)利用QSqlQuery类执行SQL语句(二) 二十五、Qt数据库(五)QSqlQueryModel 二十六、Qt数据库(六)QSqlTableModel 二十七、Qt数据库(七)QSqlRelationalTableModel 二十八、Qt数据库(八)XML(一) 二十九、Qt数据库(九)XML(二) 三十、Qt数据库(十)XML(三) 三十一、Qt 4.7.0及Qt Creator 2.0 beta版安装全程图解 三十二、第一个Qt Quick程序(QML程序) 三十三、体验QML演示程序 三十四、Qt Quick Designer介绍 三十五、QML组件 三十六、QML项目之Image和BorderImage 三十七、Flipable、Flickable和状态与动画 三十八、QML视图 三十九、QtDeclarative模块 四十、使用Nokia Qt SDK开发Symbian和Maemo终端软件 四十一、Qt网络(一)简介 四十二、Qt网络(二)HTTP编程 四十三、Qt网络(三)FTP(一) 四十四、Qt网络(四)FTP(二) 四十五、Qt网络(五)获取本机网络信息 四十六、Qt网络(六)UDP 四十七、Qt网络(七)TCP(一) 四十八、Qt网络(八)TCP(二)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值