qml与C++的交互
来源:互联网 发布:linux 发送arp包 编辑:程序博客网 时间:2024/05/17 01:40
简单说下我自己对qml与c++的交互的理解流程:
1.界面交互,很多新手可能会写qt界面或者qml界面,但要把qml与c++结合起来就一脸蒙逼了。首先我提供个简单的方法实现qml和c++的界面交互,首先引入几个重要的头文件,当然在项目文件中需要加QT+= quickwidgets才能引用以下头文件
#include <QQuickWidget>
#include <QQuickView>
#include <QQmlContext>
Widget::Widget(QWidget *parent) :
QWidget(parent)
{
qmlWidget = new QQuickWidget(this);
qmlWidget->rootContext()->setContextProperty("View",this);
qmlWidget->setSource(QUrl(QStringLiteral("qrc:/Staute.qml")));
}在构造函数里添加三句代码就让Widget界面和qml界面绑定在一起了,简单吧。温馨提示:不要忘了在析构函数中delete掉qmlWidget哦,否则重复运行程序会出现异常结束现象
简单叙述下个人拙见,第一句代码不用说是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中访问、修改还可以在属性变化时发射特定的信号。这里给一个简单的示例:
本人太懒就粗略介绍下,闲暇时再更新。
Q_PROPERTY(int taskid READ returnTaskid WRITE setTaskid NOTIFY tidChange)
public:
int returnTaskid(){return taskid;}
void setTaskid(int id){taskid = id;emit tidChange();}
signals:
void tidChange();
private:
int taskid;
顺序是成员属性、成员属性的get方法、成员属性的set方法、成员属性数据变化时发出的信号
- QML与C++的交互
- qml与C++的交互
- qml与c++之间的交互
- QML与c++交互的一些坑
- Qt与Qml交互的小Demo
- QML与C++交互
- QML与c++交互
- QML与C++交互
- QML与C++交互
- QML与c++交互
- QML与C++交互
- QML与C++交互
- qml 与 c++交互
- QML与c++交互学习
- C++与QML交互基础
- QML与c++交互方法
- qml之与C++交互
- C++与QML交互的 三种方法对比
- xcode编译代码到非测试机
- HashMap简单分析
- python的对象
- WebSocket实现Android客户端之间的简单通讯
- @Table
- qml与C++的交互
- IntelliJ IDEA设置自动导入包
- Redis-发布订阅
- Unity Build exe 设置默认分辨率
- HashMap,LinkedHashMap,TreeMap的区别
- App:transformClassesWithDexForDebug
- servlet练习(1)
- View小知识
- @Id