QML是一种描述性的脚本语言,文件格式以qml结尾。语法格式非常像CSS(参考后文具体例子),但又支持javascript形式的编程控制。我个人认为它结合了QtDesigner UI和QtScript的优点。QtDesigner可以设计出·ui界面文件,但是不支持和Qt原生C++代码的交互。QtScript可以和Qt原生代码进行交互,但是有一个缺点,如果要在脚本中创建一个继承于QObject的图形对象非常不方便,只能在Qt代码中创建图形对象,然后从QtScript中进行访问。而QML可以在脚本里创建图形对象,并且支持各种图形特效,以及状态机等,同时又能跟Qt写的C++代码进行方便的交互,使用起来非常方便。
main()
{
int a=15;
float b=1231234567;
double c=123456781234567;
char d='p';
printf("a=%d,%5d,%o,%x\n",a,a,a,a);
printf("b=%f,%lf,%54lf,%e\n",b,b,b,b);
printf("c=%lf,%f,%84lf\n",c,c,c);
printf("d=%c,%8c\n",d,d);
}
本例第七行中以四种格式输出整型变量a的值,其中“%5d ”要求输出宽度为5,而a值为15只有两位故补三个空格。 第八行中以四种格式输出实型量b的值。其中“%f”和“%lf ”格式的输出相同,说明“l”符对“f”类型无影响。“%54lf”指定输出宽度为5,精度为4,由于实际长度超过5故应该按实际位数输出,小数位数超过4位部分被截去。第九行输出双精度实数,“%84lf ”由于指定精度为4位故截去了超过4位的部分。第十行输出字符量d,其中“%8c ”指定输出宽度为8故在输出字符p之前补加7个空格。
使用printf函数时还要注意一个问题,那就是输出表列中的求值顺序。不同的编译系统不一定相同,可以从左到右,也可从右到左。Turbo C是按从右到左进行的。请看下面两个例子:
1)使用PageStack来完成
在我们的RssReader中的例子中,我们使用了PageStack来完成我们的导航。我们可以把我们的每个页面都做成我们的Page。当我们的页面被点击后,我们把新的Page压入栈中。在返回时,我们只需要点击返回按钮即可:
我们可以在我的例程中找到相应的代码。
2)使用一个不可见的显示在需要时显示出来
在我们的使用中,我们使用两个重叠在一起的窗口,但是详细的页面只有在ListView中的item被点击后才能显示。在默认的情况下,我们显示ListView。
[html] view plaincopy在CODE上查看代码片派生到我的代码片
ListView {
id: listview
clip: true
anchorsfill: parent
model:mymodel
header: Text {
text: "This is the header"
fontpixelSize: 30
Rectangle {
anchorstop: parentbottom
width: listviewwidth
height: unitsgu(04)
color: "blue"
}
}
delegate: MyDelegate {}
footer: Text {
text: "This is the footer"
fontpixelSize: 30
}
}
Item {
id: popup
visible: false
clip: true
property url loadUrl
onLoadUrlChanged: {
opacity = 0;
visible = (loadUrl == '' false : true);
consolelog("opacity: " + opacity );
consolelog("visible: " + visible );
}
anchorsfill: parent
Rectangle {
id: bg
anchorsfill: parent
color: "white"
}
MouseArea{
anchorsfill: parent
enabled: popupvisible
//Eats mouse events
}
Loader{
focus: true
source: popuploadUrl
width: parentwidth
height: parentheight -toolbarheight
}
Rectangle {
id: toolbar
width: parentwidth
height: unitsgu(4)
anchorsbottom: parentbottom
color: "blue"
Icon {
name: "previous"
width: unitsgu(35)
height: unitsgu(35)
MouseArea {
anchorsfill: parent
onClicked: {
popuploadUrl = "";
anirunning = true;
}
}
}
}
NumberAnimation on opacity {
id: ani
from: 0
to: 1
duration: 3000
}
}
为了能够在我们的QML应用中很好地使用C++,我们采用了我们SDK提供的"QtQuick App with QML UI (qmake)"
我们创建一个叫做"baiduweather"的应用.我们想利用我们的百度提供的API接口
以上就是关于在qml工程中怎么使用qmldir进行模块管理全部的内容,包括:在qml工程中怎么使用qmldir进行模块管理、求助,qml与QT,使用QList<QObject*>数据交互问题、如何在QML中使用ListView并导航到其它页面中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)