频道栏目
首页 > 资讯 > C++ > 正文

qml与C++的交互

17-07-13        来源:[db:作者]  
收藏   我要投稿

qml与C++的交互,简单说下我自己对qml与c++的交互的理解流程:

1.界面交互,很多新手可能会写qt界面或者qml界面,但要把qml与c++结合起来就一脸蒙逼了。首先我提供个简单的方法实现qml和c++的界面交互。

首先引入几个重要的头文件

#include 
#include 
#include 
Widget::Widget(QWidget *parent) :
    QWidget(parent)
{

    qmlWidget = new QQuickWidget(this);
    qmlWidget->rootContext()->setContextProperty("View",this);
    qmlWidget->setSource(QUrl(QStringLiteral("qrc:/Staute.qml")));
}
在构造函数里添加三句代码就让Widget界面和qml界面绑定在一起了,简单吧。

简单叙述下个人拙见,第一句代码不用说是qml界面,第二句是为了把Widget界面用View表示,使得当前界面的属性能传入qml界面,简单说就是this这个指针用View联系在了一起。

第三句代码想必各位都理解,就是加载qml文档。把widge显示后界面就是你在qml文件编辑的界面了。需要注意的是qml文档要移到资源文件中去。

如果你想在qml里面使用Widget的函数或者是成员的话类似View.width;点后面加成员属性或者函数就可以了。需要注意的有几点:

想要将一个类或对象导出到qml中必须满足以下条件

1.从QObject或QObject的派生类继承

2.使用Q_OBJECT宏

Q_INVOKABLE宏

在定义一个类的成员函数时使用Q_INVOKABLE宏来修饰就可以让该方法被元对象系统调用,即可使用View.function这种方式访问c++函数。宏必须放在返回值类型前(最前面)

如果是槽函数则可以省略,因为槽函数本身能被元对象系统调用。

Q_PROPERTY宏用来定义可通过元对象系统访问的属性,通过它定义的属性可以在QML中访问、修改还可以在属性变化时发射特定的信号。

相关TAG标签
上一篇:关于压测过程中服务器报26612: HTTP Status-Code=500 (Internal Server Error)
下一篇:关于微信支付,以及返回-1的问题(千万不要慌不要慌!)
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站