QML学习(1)

本文是QML初学者的引导,介绍了QML的基本概念、语法和图像处理,结合实例展示了如何使用QML创建用户界面,并探讨了其在脚本语言中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

  • 目标: 能够熟练掌握QML的开发。

     

     

    第一天:

    QML是什么?

    官方有很标准的定义,我个人觉得它是一个脚本语言,能够通过该脚本语言创建动态的场景,有点类似于FLASH

     

    为什么要学习QML

    因为现代程序对界面的需求越来越高,而一般的C++界面设计比较复杂,所以需要一种能够快速建立界面,并且能够很好的与下层逻辑进行衔接的方案,QML就满足了这样的需求。

     

    QML初步理解:

    看了QML的一些示例代码,感觉QML是一种脚本语言,用于动态创建一个场景。也许大家觉得“QML是一种脚本语言,用于动态创建一个场景”这句话就和废话差不多,但其实却差很多。它是一种脚本语言,那就说明它有它的格式,所以大家在看代码的时候,可以理解它就是这样,先不要问为什么这样;它用于动态创建一个场景,这个非常重要,一般的程序很少有感觉是场景的,但写QML的过程你会非常直观的感觉是在创建一个场景,安排各种各样的事物,让它们具有不同的属性特征,然后某些物体属性的变化,或用户的交互,引发另外一个物体的变化。

     

    学习QML的过程,就是学习如何成为一名初级导演的过程。

     

    下边有几个问题首先需要解决。

    1 我们如何来创建一个物体?以及可以创建哪些物体?

    2 一个物体的变化,或用户的交互,如何引发场景的变化?

     

    QML内部定义了很多的对象类型,我们可以直接创建这些对象类型的物体,至于有哪些对象类型,暂时先不叙述,因为以后我们会一个一个逐渐学习到。创建一个物体的过程就更加简单了,按照QML的语法规则,写几行文字就可以创建一个物体了,其实本质上就是写了一句,给我创建一个拿刀的身高180CM的男性士兵,这么简单。

     

    现在让我们来看看,如果我想创建一个简单的场景,里边包含一个显示文字信息的物体,并且让它出场时就显示“我是一头猪”,该怎么操作?首先先创建一个场景,基本代码如下:

    Rectangle

    {

    // 既然是场景,那肯定要设定个大小

    width:500           // 场景的宽

    height:500          // 场景的高

     

    // 场景内包含的物体信息

     

    // 显示文字信息的物体

    Text

    {

    x:100

    y:100

     

    text:"I'm a pig"   // 为啥是英文?因为刚刚测试中文显示有点问题,BUG

    }

    }

    以下是运行的结果:

     

     

     

    屏幕剪辑的捕获时间: 2011-1-24, 20:34

     

    上边的代码,虽然很简单,但里边包含了太多的东西,需要一点点进行剖析,这样大家才能够更加扎实的逐步深入掌握精华。

     

    1 脚本,或者场景剧本的书写格式是什么样的?

    大家可以很直观的感觉到,是一种直观的物体包含物体的组织方式,类似于树,从根逐渐发展到叶子。而这里的最根节点,我们可以认为就是场景。

    格式基本如下:

    物体

    {

    属性:属性值

     

    物体

    {

    ….

    }

    }

     

    2 什么是物体的属性?

    就像自然界的东西,每个物体都有自己的属性特征,例如美女,就有身高,体重,三维等等很重要的几个属性信息,如刚刚示例中场景有大小这样的属性,文字有内容属性,有位置属性等。

     

    3 怎么能够知道哪些物体有哪些属性?属性叫什么名字?

    这个问题真的有点难度了,这个可真是基本功了。不过不要紧,咱可以学点精髓,然后用啥看啥,看啥会用啥就可以了。那啥叫精髓?就是能看懂QML基本文档信息,就叫精髓了。例如上边示例中的Text那个东西的参考文档,http://doc.qt.nokia.com/4.7/qml-text-members.html

    这个文档中有Text这类物体的所有属性信息,太多了,很难记住,随便选一个先看看,例如font.pointSize这个属性,看上去像是设置文字字体大小的,打开链接看到该属性的描述信息,首先,该属性的取值是一个数字,其次,它确实是用来设置字体大小的,那么,我们就来看看将刚刚示例中的字体大小改为30看看,修改后代码如下:

     

    Rectangle

    {

    // 既然是场景,那肯定要设定个大小

    width:500           // 场景的宽

    height:500          // 场景的高

     

    // 场景内包含的物体信息

     

    // 显示文字信息的物体

    Text

    {

    x:100

    y:100

     

    // 新增加属性,设置字体大小

    font.pointSize:30

     

    text:"I'm a pig"   // 为啥是英文?因为刚刚测试中文显示有点问题,BUG

    }

    }

     

    运行结果如下:

     

     

     

     

    屏幕剪辑的捕获时间: 2011-1-24, 21:00

     

    哈哈,明显比刚刚大了,说明这很有效果。

     

    4 还能创建哪些物体?

    和刚刚一样,给大家一个链接,上边是最基本的显示相关的物体,大家可以瞅瞅看看。http://doc.qt.nokia.com/4.7/qml-basic-visual-elements.html

    大家可以看到QML Text Element这行,就是刚刚显示文字的那个物体,点击链接进入后就可以看到这个物体相关的属性信息了,我们这里可以举个新的示例,比如,Image物体,从名称上来看,我们可以猜想这应该是和图片相关的一个物体,打开链接后,看到该物体有一个source的属性,看属性描述应该是描述图片的链接信息,这样我们就现在场景中打开一个小图片,代码如下:

     

    Rectangle

    {

    // 既然是场景,那肯定要设定个大小

    width:500           // 场景的宽

    height:500          // 场景的高

     

    // 场景内包含的物体信息

     

    // 显示文字信息的物体

    Text

    {

    x:100

    y:100

     

    // 新增加属性,设置字体大小

    font.pointSize:30

     

    text:"I'm a pig"   // 为啥是英文?因为刚刚测试中文显示有点问题,BUG

    }

     

    // 显示图片物体

    Image

    {

    source:"qtlogo.png"

    }

    }

     

     

     

     

    屏幕剪辑的捕获时间: 2011-1-24, 21:11

     

     

    我们现在已经学习了如何创建对象,如何设置对象属性,应该是一个很伟大的目标完成了。

    大家看到这里应该可以随意创建一个静态的场景了吧?好好玩一玩吧,玩的多了,下一步的学习将更加有效果。

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值