海尔顺逛微店能赚钱吗:QML总结(下)--引用网上资源

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 16:38:21

 

 

QML调研续

2011.6.24

 

 

1.数据类型与视图...................................... 2

1.1 列表视图ListView示例........................... 2

1.2网格视图 GridView示例........................... 3

1.3路径视图 PathView示例........................... 6

1.4 Flickable...................................... 7

2.QML与QT/C++交互.................................... 7

1.示例一:QML调用C++中设置好的元素................. 8

2.示例二:......................................... 9

3. QML程序打包运行................................... 13

 

 

 

 

 

 

 

1.数据类型与视图

  QML使用了与QtModel-View类似的结构,即模型—视图结构。模型可以是QML的简单数据,或者复杂的C++数据。具体有:

     QML: ListModel, XmlListModel, VisualItemModel

     C++: QAbstractItemModel, QStringList, QList

 

 视图显示模型提供的数据,主要有:ListView, GridView, PathView

 Model定义好数据,通过Delegate来描述Model中每条数据在View具体显示的控件。

 

 1.1 列表视图ListView示例

 

运行效果图:

 

 1.2网格视图 GridView示例

 

 

运行效果图:

 

 

 

1.3路径视图 PathView示例

 

 

 

 

 

 1.4 Flickable

 可以让它的孩子元素可以被拖拽和滚动,但却不用创建一个MouseArea或者处理鼠标事件。好处:Flickable界面很容易通过属性配置,flickDirection, flickDeceleration,horizontalVelocity, verticalVelocity,boundsBehavior, 很多QML元素默认是flickable

 

 

2.QML与QT/C++交互

 

具体描述参见上一个调研报告,以下是具体示例。

1.示例一:QML调用C++中设置好的元素

 

 

运行结果:

 

 

2.示例二:

 

 

 

 

 

 

 

运行结果:

 

 

 

 

3.QML程序打包运行

  QT有动态编译和静态编译之分。

  动态引用编译,是指相关的库,以dll的形式引用库。动态编译的Exe程序尺寸比较小,因为相关的库都没有包含进来。当然,程序发布的时候,还要把相关的库也一并发布出去。
  静态引用编译,是指把相关的库也一并引入Exe文件。这是程序的尺寸就会很大,不过,程序发布就会变得简单很多。

 

  TipsQT的静态编译的配置网上有各种各样的方法,我试了好几个,最终成功了。过程相当麻烦,好像也没有官方的说法,所以就挨个试。

  以下是具体步骤:

 

首先是设置变量:
set QTDIR=%Dir%
set PATH=%PATH%;%QTDIR%\bin
set QMAKESPEC=win32-msvc2008
"C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat"" x86
配置makefile
configure -release -static -fast -qt-sql-odbc -qt-sql-sqlite
然后就是oy(这个地方会很有可能过不去,我试了三种不同的方法才过去的。主要原因我分析有以下几种:环境变量配置出错,出来上面几个必须的,qt下的libincludebin目录都要配置上。再有就是vsbin目录也要配置上。)
nmake
然后就是漫长的等待(我是用了两个小时,网上说有五个小时的)
然后发发现lib下果然只有一大堆lib文件了,而且每个lib文件的尺寸都在M以上,似乎已经成功了。然后我们在安装了qt-vsintegrationVC2008新建一个Qt工程,然后编译一个release版本。

这样生成的exe就可以直接在其他机子上运行了。

 

但是有另外一个问题:这都是网上针对qt说的,我尝试过后,对于qml文件还是不能打包进exe文件,只能是exe文件和qml文件一起才能运行。暂时还没找到解决办法。但是可以在其他机子上点击exe直接运行了。