Qt移动应用开发(六):QML与C++的交互
上一篇文章讲到了在Qt Quick中实现场景切换的一种可能的方法,场景切换是诸如游戏等应用在内必须要面临的技术难点,所以场景切换并没有通行的方法,根据自己的使用习惯进行设计即可。
本文主要介绍的是如何使用QML和C++进行交互,难度稍微偏大,适合有经验的Qt开发者进行学习交流。
Qt 5吸收了Qt 4的declarative模块的优点,对底层进行了更改,新建了QPA层,隔离了不同操作系统API和上层Qt代码,同时QML/QtQuick也可以顺利在不同平台上运行。另外由于考虑到让Qt程序接入不同的库函数,因此Qt开放了接口让QML层和C++代码进行交互。之前已经有较多介绍QML与C++交互的文章了,本文仅作为一种有益的补充,更多相关的知识可以查询Qt帮助文档或向我留言。
本文的例子在Qt 5.3.1中顺利编译运行通过。
原创文章,反对未声明的引用。原博客地址:http://blog.csdn.net/gamesdev/article/details/37359873
首先一个较为简单的方法就是注册上下文属性(Context Property),让QML访问C++的变量。代码如下:
#include <QApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.rootContext( )->setContextProperty(
"Greeting",
QObject::tr( "Hello QML from C++" ) );
engine.load(QUrl(QStringLiteral("qrc:///main.qml")));
return app.exec();
}
然后在QML中简单地调用”Greeting”变量名就可以顺利访问了。
import QtQuick 2.2
import QtQuick.Controls 1.1
ApplicationWindow
{
visible: true
width: 640
height: 480
title: qsTr("测试QML于C&#