等雨成冰的个人主页

http://www.qtcn.org/bbs/u/130507  [收藏] [复制]

等雨成冰

不求与人相比,但求超越自己。

  • 8

    关注

  • 6

    粉丝

  • 43

    访客

  • 等级:新手上路
  • 总积分:8
  • 保密,2011-01-01

最后登录:2016-09-09

更多资料

日志

纸上得来终觉浅,绝知此事要躬行之关于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还需要完善。
   此文仅为抛砖引玉之用,有不是之处请各位指出。
分类:编程|回复:3|浏览:2236|全站可见|转载
 
 
删除

XChinux:还不如手工写QML、JS来得快捷方便些,就像高级网页设计人员必然要掌握手工写HTML、JS、CSS代码一样。

2012-11-20 20:48 -
删除

XChinux:若熟悉Qt/C++开发则QML最好结合C++开发,这样自由度和性能更有保证。开发重量级应用必须借助C++了,包括C++写自定义QML组件。Qt Quick Designer实际开发时还是太笨重了

2012-11-20 20:47 -

等雨成冰:嗯!的却如此。

2012-11-21 09:14

Powered by phpwind v8.7 Certificate Copyright Time now is:05-19 05:36
©2005-2016 QTCN开发网 版权所有 Gzip disabled