作者:奋斗ing丶孩子
转自:http://blog.sina.com.cn/s/blog_a6fb6cc90101h1nz.html
import QtQuick 2.0
Image {
id: root
source: "Images/background.png"
}
因为QML不作任何限制,元素类型使用Image作为根元素,使用source属性作为根元素的背景图像。
注:
每个元素都具有属性,例如一个图象,有width、height,还有其它属性,像source。图像元素的size属性从图像尺寸自动扣除。否则,我们就需要设置width、height属性为一些有用的像素值。
最标准的元素都位于QtQuick 2.0模块—我们在第一行包含的import语句。
id特殊属性是可选的,并包含一个标识符,后来在在文件的其它地方中引用这个元素。重要提示:id属性一旦被设置就不能被更改,且不能在运行时设置。使用root作为ID为根元素只是一种作者的习惯,在较大QML文档中引用最顶层元素则可以预测。
风轮的用户界面的前景元素放置被替换为另一个图片。
通常情况下你的用户界面将被由许多不同的元素类型,而不仅仅是Image元素,像下面这个例子:
import QtQuick 2.0
Image {
id: root
Image {
id: wheel
anchors.centerIn: parent
source: "Images/pinwheel.png"
}
}
使用anchor属性放置风轮在中央位置,锚允许指定父和兄弟姐妹对象之间的几何关系。放在另一个元素的中心(anchors.centerIn: parent)。有left、right、top、bottom、centerIn,、fill、verticalCenter、horizontalCenter关系。当然,他们需要匹配,若锚在顶部元素的左侧则它没有任何意义。
所以我们设置风轮作为背景在父窗体的中心。
注:
有时候你需要精确定心做小的调整。这将有可能用anchors.horizontalCenterOffset或anchors.verticalCenterOffset。类似的调整属性也适用于所有其它锚。请咨询为锚属性的完整列表的文档。
将一个图像作为根矩形元素的子元素展现了一种声明式语言的一个重要概念。描述用户界面层和分组的顺序,其中最顶层(矩形)是首先绘制的,子层在包含元素的局部坐标系中绘制。
为了使展现变得更有趣,我们想加上互动。想法是,当用户按下鼠标中的某处场景以便转动风轮。使用MouseArea元素。
import QtQuick 2.0
Image {
id: root
Image {
id: wheel
anchors.centerIn: parent
source: "Images/pinwheel.png"
MouseArea {
anchors.fill: parent
onClicked: wheel.rotation += 90
}
}
}
当用户点击它里面的覆盖面积时,鼠标区域发出的信号。可以连接到这个信号来覆盖onClicked功能。在这种情况下,参考风轮图像90度旋转。
注:
这适用于每一个信号,命名为:on + SignalName(如:onClicked)。当所有属性值发生了改变时,还发出一个信号,命名为:on + PropertyName + Changed(如:onValueChanged)。
如果一个属性改变你可以用onWithChanged观察。
现在,风轮可以旋转,但仍然不流利。旋转属性将立即更改。我们希望,属性90度改变随着时间的改变来进行。现在动画开始发挥作用。要启用此我们使用一个动画类型调用属性的行为,它指定定义属性的行为的每一个变化。这仅是几种类型声明一个动画。
import QtQuick 2.0
Image {
id: root
Image {
id: wheel
anchors.centerIn: parent
source: "Images/pinwheel.png"
MouseArea {
anchors.fill: parent
onClicked: wheel.rotation += 90
}
Behavior on rotation {
NumberAnimation {
duration: 250
}
}
}
}
现在,每当风轮旋转改变时,将会使用NumberAnimation为250毫秒的持续时间进行动画处理。因此,每个90度的旋转将消耗250毫秒。
现在,风轮看起来已经好多了。希望这可以让你更好地理解关于Qt Quick的程序是怎么工作。
Qt的构建模块
Qt5包括大量的模块。一般来说一个模块是开发者使用的库。有些模块在Qt应用平台里是强制性的。他们形成了一套名为Qt的必备模块。也有很多模块都是可选的,并形成了Qt添加功能模块。大多数开发人员不需要使用它们,但很高兴知道它们为共同挑战提供了无价的解决方案。
三、Qt的必备模块
Qt的必备模块强制应用在Qt启用平台里。他们提供的基础开发现代Qt5应用程序使用Qt Quick 2。
核心基础模块
Qt5模块的最小集合进行QML编程。
模块 | 描述 |
Qt Core | 使用其它模块的核心非图形类 |
Qt GUI | 图形用户界面(GUI)组件的基础类,包括OpenGL的。 |
Qt Multimedia | 处理音频、视频、广播、摄像头功能的类。 |
Qt Network | 使网络编程更容易,更轻便的类。 |
Qt QML | QML和JavaScript的类 |
Qt Quick | 自定义用户界面构建高度动态的应用程序的声明性框架。 |
Qt SQL | 使用SQL集成数据库的类 |
Qt Test | 进行Qt应用程序和库单元测试的类。 |
Qt WebKit | 基于WebKit2实现的一个新的QML API类。参见Qt WebKitWidgets模块。 |
Qt WebKit Widgets | Qt4中,WebKit1和QWidget-based类。 |
Qt Widgets | 用C++部件扩展Qt图形界面的类。 |
Qt插件
除了必不可少的模块,Qt还提供了软件开发的附加模块,它不是发行版的一部分。以下是附加模块的一个简短的列表。
注:
这些模块不是发行版的一部分,取决于有多少活跃的贡献者以及如何得到测试。
四、支持的平台
Qt支持多种平台。主要桌面和嵌入式平台也支持。通过Qt应用程序的抽象,如今可以则可以更容易地移植到自己的平台上。
在一个平台上测试Qt5比较耗时。一个子平台被qt-project选中来构建参考平台。这些平台通过系统测试彻底测试,以确保最佳的质量。不过提醒你:没有代码错误是免费的。
Qt项目
出自:qt-project wiki:
“Qt-Project是一个对Qt感兴趣的精英们一致认同的社区。分享乐趣的任何人都可以加入,参与决策过程,并对Qt的发展做贡献。”
Qt-Project是一个组织,利用开源让Qt更进一步。它形成了其他用户做贡献的基础。最大的功臣是DIGIA—对Qt持有商业权利。
Qt对公司有开源方面和商业方面。商业方面为那些不用或不想遵守开源许可的公司提供。如果没有商业方面,这些公司就无法使用Qt,也不会允许DIGIA为Qt-Project贡献那么多的代码。
有许多全球范围内的公司,在不同平台上使用Qt进行咨询和产品开发。有很多开源项目和开源开发者,这依赖于Qt的作为他们主要的开发库。这对成为活跃社区的一部分以及使用这些了不起的工具和库来说很棒,这会让你成为一个更优秀的人吗?也许O(∩_∩)O~)
贡献地址:wiki.qt-project