日志
纸上得来终觉浅,绝知此事要躬行之关于Qt Quick
2012-11-20 11:13
最近闲来无事,就随便看了看Quick方面的资料。虽然看起来挺简单的,但是到了实际应用的时候感觉还是差那么一点点。如同有一层隔膜在中间看得到摸不着。
首先,我们来看什么是Quick:Qt Quick是Qt 4.7主推的技术,下面是Qt官网对其进行的介绍: Qt Quick is a collection of technologies that are designed to help developers create the kind of intuitive, modern, fluid user interfaces that are increasingly used on mobile phones, media players, set-top boxes and other portable devices.Qt Quick consists of a rich set of user interface elements, a declarative language for describing user interfaces and a language runtime. A collection of C++ APIs is used to integrate these high level features with classic Qt applications. 大致意思是说:Qt Quick是一种高级用户界面技术,旨在帮助开发人员创建的一种直观的,现代的,动态触摸的用户界面,越来越多地用在手机,媒体播放器,机顶盒和其他便携式设备的开发上。Qt Quick由一组丰富的用户界面元素,一个陈述性语言描述的用户界面和语言运行库。包含的C+ + API接口可以完美的与它的高级应用整合在一起。 基于好奇心的驱使我毫不客气的打开Qt Creator新建了一个工程,然后选择了Qt Quick application,之后我就晕了出现了一大堆的文件其实都没啥用处,之后我就去找main函数就出现了这样的代码: Q_DECL_EXPORT int main(int argc, char *argv[]) { QScopedPointer<QApplication> app(createApplication(argc, argv)); QmlApplicationViewer viewer; viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto); viewer.setMainQmlFile(QLatin1String("qml/first/main.qml")); viewer.showExpanded(); return app->exec(); } 最后还看到一个main.qml // import QtQuick 1.0 // to target S60 5th Edition or Maemo 5 import QtQuick 1.1 Rectangle { width: 360 height: 360 Text { text: qsTr("Hello World") anchors.centerIn: parent } MouseArea { anchors.fill: parent onClicked: { Qt.quit(); } } } 运行起来之后会弹出一个窗口显示“hello world” 又是那么老套的话。一点击窗口就消失了,原来是这句话起作用了: onClicked: { Qt.quit(); } 说了这么多我们还是来看啥叫QML吧。 QML是一种描述性的脚本语言,文件格式以.qml结尾。语法格式非常像CSS。但又支持javascript形式的编程控制。我个人认为它结合了QtDesigner UI和QtScript的优点。QtDesigner可以设计出.ui界面文件,但是不支持和Qt原生C++代码的交互。QtScript可以和Qt原生代码进行交互,但是有一个缺点,如果要在脚本中创建一个继承于QObject的图形对象非常不方便,只能在Qt代码中创建图形对象,然后从QtScript中进行访问。而QML可以在脚本里创建图形对象,并且支持各种图形特效,以及状态机等,同时又能跟Qt写的C++代码进行方便的交互,使用起来非常方便。 对于一个新生的事物,我们最感兴趣的是它到底能做什么,而对于QML,Qt已经自带了大量的演示程序,我们可以体验一下QML的强大。所有的小例子都在Qt的安装目录下的examples\declarative目录下你可以去看看。 运行qml文件的方法: 方法一:使用qml.exe 所有的qml文件都需要使用一个叫qml.exe的程序来运行。它在D:\QtSDK\Desktop\Qt\4.8.0\msvc2010\bin目录下(在你的安装目录下找吧)。我们双击qmlviewer.exe,然后用它打开一个qml文件,便可以看到效果了。方法二:在Qt Creator中打开。为了安全起见,我们先将要使用的文件夹复制出来,然后我们打开Qt Creator ,新建工程,这里选择Import Existing Qt QML Directory一项。然后填写工程名,路径指定到我们复制的animations文件夹。完成后我们点击Qt Creator工程列表中的任意一个qml文件,然后点击运行按钮,就可以执行了。 现在终于发现界面很炫比起Qt Designer设计的好看多了,利用QML,编写几句简单的代码就能实现让人心动的界面。一想到这里我就行动起来了。 在不懈的努力下终于完成了一个自己的QMl界面但是还是有点不习惯Qt Quick Designer感觉用起来还不是很顺手。觉得如果开发比较大的程序比较麻烦发,所以其开发轻量级的应用程序还是比较好用的。还有就是其逻辑部分与界面分离感觉这点不错。对不熟悉c++的程序员也没多大影响,总的来说就是入手比较容易但是深入还需要时间;不支持版本跨越,Qt Quick Designer还需要完善。 经过几天的学习发现了以下几点:一、Qt Quick 对不熟悉Qt的人也没有关系,是个人都能很快上手。二、偏向于轻量级应用程序开发。三、需要一些javascript的知识,实现了代码和界面分离。四、不支持版本跨越。五、个人觉得Qt Quick Designer还需要完善。 此文仅为抛砖引玉之用,有不是之处请各位指出。 |
下一篇: (转)Qt核心剖析: moc
上一篇: 浅谈样式表QSS的应用