如何在qmake项目中在QML易语言qq交谈调用代码中调用C++代码

2929人阅读
C++技术(119)
& & Enginio是随着Qt2012年的Qt开发者大会上提出的。目的是让Qt开发者对接目前正在蓬勃发展的云技术。在经过半年的发展后,Enginio已经迎来了第一个Alpha版本(日)。预计Enginio将在Qt5.2的时候成为Qt的一部分。
&& &在认识Enginio之前,我们先来了解一下几种不同的与技术解决方案:IaaS,即Infrastructure as a Service,基础架构即服务,通过互联网提供了数据中心、基础架构硬件和软件资源。IaaS可以提供服务器、操作系统、磁盘存储、数据库和/或信息资源。PaaS,即Platform as a Service,平台即服务,提供了基础架构,软件开发者可以在这个基础架构之上建设新的应用,或者扩展已有的应用,同时却不必购买开发、质量控制或生产服务器。SaaS,即Software
as a Service,软件即服务,是最为成熟、最出名,也是得到最广泛应用的一种云计算。大家可以将它理解为一种软件分布模式,在这种模式下,应用软件安装在厂商或者服务供应商那里,用户可以通过某个网络来使用这些软件,通常使用的网络是互联网。而我们将要了解的Enginio,则是BaaS(Backend as a Service)。它的作用是提供一个数据库后台,通过它规定的API调用,就可以将应用程序的各种数据存储在后台上,实现即存即得。从这个角度来说,Enginio很像我们所说的网盘,只是它提供了Qt风格的API,给Qt开发者带来了很大的方便。
&& &原创文章,反对未声明的引用。原博客地址:http://blog.csdn.net/jiangcaiyang123/article/details/9465757
&& &目前Enginio的内部版本是0.5,可见它仍处于评估期,0.5相比0.4,有了很大的改变,首先是API接口全部重写了,在0.4版本上编译成功的应用到了0.5就要重新编码再编译。官方给的解释是要让0.5的API尽量像Qt其它库中那样的风格。此外为了代码的复用,它不再提供自己Object,转而用QJsonObject作为传输类型。Json是一种简单而且丰富的数据类型,它能够表达很多种格式的数据。此外0.5还有一些其它的更新。
&& &我自己制作了一个小的例子程序(下载地址在),测试Enginio是否可用,事实证明Enginio是能够工作的。
&& &下面就来介绍一下如何下载并使用Enginio。
&& &1、登录https://engin.io/
&& &2、如果没有注册的话,那么注册(Sign up)一个账号吧。如果你已经有了一个账号,那么可以直接点击登录(Sign in)。&& &3、在你的dashboard中创建一个Backend,这样你将得到一个后台ID和密钥,这些将在程序中起着重要的作用。同时将会跳转到Backend界面。
&& &4、在Libraries这一栏中点击Qt/QML的Download,下载最新版的Qt库。
&& &5、解压库到一个没有中文和空格的路径中。
&& &6、在确保qmake和make/mingw32-make在路径中后,用cmd,在控制台下构建Enginio。方法是:
&& &&& &cd $${Enginio路径}
&& &&& &qmake
&& &&& &make install或者mingw32-make install
&& &7、Enginio库安装完毕,以后就可以#include &Enginio&和在pro文件中使用QT += enginio了。
&& &下面介绍一下如何使用Enginio(Qt)与后端通信。首先是接收数据,下面的代码介绍了如何将Enginio后台的数据接收到客户端:
&& &发送数据的步骤就更简单了。
&& &除了可以通过API获取数据外,还可以登录Enginio的后台去看数据是否已经添加,非常方便。当然示例代码只是将一个个文字发送到后台,通过Json,像图片之类的多媒体文件也可以上传和下载。
&& &最后在qt-project.org论坛上,Enginio的开发团队希望在后续的版本中添加notification功能,也就是说可以通过一个客户端对后端的改动来通知所有客户端的更新,就像SVN协同工作一样,又像是QQ群聊的功能。如果真是这样,那么Enginio作为一款Qt开源库的作用就更大了,期待后续版本!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2103407次
积分:18937
积分:18937
排名:第347名
原创:75篇
转载:1062篇
评论:278条
(21)(18)(25)(67)(31)(32)(27)(56)(13)(12)(8)(33)(32)(36)(12)(34)(42)(30)(17)(11)(3)(5)(11)(18)(17)(13)(17)(7)(6)(27)(19)(47)(1)(19)(11)(2)(1)(26)(20)(10)(6)(2)(8)(3)(10)(9)(6)(4)(15)(7)(2)(7)(8)(50)(14)(11)(26)(20)(4)(1)(5)(14)(12)(4)(4)(3)(2)(4)(2)(4)(1)(1)(1)(3)(2)(11)(3)(8)(15)(2)(1)QML和C++的相互调用 - 开源中国社区
当前访客身份:游客 [
当前位置:
发布于 日 10时,
把微信里的打飞机游戏界面用QML实现,实际的计算放在C++中;并且实现了QML调用C++的函数,C++也能调用QML的函数源码链接:/s/1i5zzOot&密码:aqzn
代码片段(1)
1.&[代码][C/C++]代码&&&&
1.在main函数对QML进行加载
//QML界面的加载
QQmlComponent component(&engine, QUrl(QStringLiteral("qrc:/main.qml")));
qDebug() && component.errors();
Fly::qmlObj = component.create();
2.在Fly类中将,必须将qmlObj对象设置为static,因为这样才能保证,你注册到qml中的Fly对象和你自己使用的Fly对象是同一个对象
static QObject* qmlO
3.C++调用qml的方式:
QMetaObject::invokeMethod(root , "destroyBullet" , Q_ARG(QVariant , obj));
4.C++注册到qml中方式:
qmlRegisterType&Fly&("fly", 1, 0, "Fly");
在qml中包含头文件:import fly 1.0
开源中国-程序员在线工具:
相关的代码(168)
开源从代码分享开始
胡圈圈的其它代码3956人阅读
在QML中调用c++方法并接收信号
继续上一篇的内容使用C++创建新的QML类型,接下来我们在PieChart 这个类中添加一个函数&clearChart()& 和一个信号&chartCleared&,这样在app.qml中就可以像下面一样调用这个函数,并接收这个信号了:
import Charts 1.0
import QtQuick 1.0
&&&& width: 300; height: 200
&&&& PieChart {
&&&&&&&& id: aPieChart
&&&&&&&& anchors.centerIn: parent
&&&&&&&& width: 100; height: 100
&&&&&&&& color: &red&
&&&&&&&& onChartCleared: console.log(&The chart has been cleared&)
&&&& MouseArea {
&&&&&&&& anchors.fill: parent
&&&&&&&& onClicked: aPieChart.clearChart()
&&&& Text {
&&&&&&&& anchors { bottom: parent. horizontalCenter: parent.horizontalC bottomMargin: 20 }
&&&&&&&& text: &Click anywhere to clear the chart&
File:SimpleChart2.png&
为c++类添加被调用的方法和信号
下面我们就来看一下在C++的类中我们具体应该怎么做:
class PieChart : public QDeclarativeItem
&&&& Q_INVOKABLE void clearChart();
&&&& void chartCleared();
使用Q_INVOKABLE 使得Qt Meta-Object 系统可以访问到clearChart() 方法,于是QML也可以访问到这个方法了。请注意,由于槽函数(slots)也可以被QML调用,因此clearChart() 也可以被声明为一个Qt slot 而不使用Q_INVOKABLE。这两种方式都是有效的。
clearChart() 方法将绘制扇形图的画笔颜色设置成Qt::transparent(透明),并重绘扇形图,最后发出chartCleared()信号:
void PieChart::clearChart()
&&&& setColor(QColor(Qt::transparent));
&&&& update();
&&&& emit chartCleared();
现在我们可以启动这个应用程序并点击其窗口区域,于是窗口上的扇形图就消失了,并且应用程序有如下输出:
The chart has been cleared
大家可以在 Qt 的 examples/tutorials/extending/chapter2-methods目录中找到这个程序的完整代码。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:313492次
积分:4377
积分:4377
排名:第5573名
原创:144篇
转载:72篇
评论:60条
(5)(1)(1)(1)(2)(1)(1)(1)(1)(1)(1)(1)(7)(2)(3)(6)(25)(12)(10)(2)(7)(5)(8)(10)(11)(2)(3)(3)(8)(22)(25)(3)(26)&>&&>&&>&&>&Qt实例分析——QML调用C++方法, C++调用QML(
Qt实例分析——QML调用C++方法, C++调用QML(
上传大小:4KB
QML调用C++方法, C++调用QML,C++发送信号QML接收
综合评分:5(2位用户评分)
所需积分:8
下载次数:18
审核通过送C币
创建者:nigelyq
创建者:scaulaughter
课程推荐相关知识库
上传者其他资源上传者专辑
开发技术热门标签
VIP会员动态
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
android服务器底层网络模块的设计方法
所需积分:0
剩余积分:720
您当前C币:0
可兑换下载积分:0
兑换下载分:
兑换失败,您当前C币不够,请先充值C币
消耗C币:0
你当前的下载分为234。
Qt实例分析——QML调用C++方法, C++调用QML(
会员到期时间:
剩余下载次数:
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
olittle123
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:

我要回帖

更多关于 c语言如何调用oc代码 的文章

 

随机推荐