QML C++插件dll引用
来源:互联网 发布:周杰伦官方淘宝店 编辑:程序博客网 时间:2024/06/05 05:13
QML C++插件dll引用
插件的创建非常简单,但是它可以复用,并且为不同的应用程序扩展类型。使用创建的插件是非常灵活的
解决方案。关于插件一个很好的例子见QmlBook-In-Chinese 中最后一章介绍的例子。
本文主要备忘生成插件dll,怎么引用。
1.创建插件 ,Library->Qt Quick 2 Extension Plugin
#ifndef MYITEM_H#define MYITEM_H#include <QQuickItem>class MyItem : public QQuickItem{ Q_OBJECT Q_DISABLE_COPY(MyItem)public: MyItem(QQuickItem *parent = 0); ~MyItem(); Q_INVOKABLE void read();};#endif // MYITEM_H
#include "myitem.h"#include <QDebug>MyItem::MyItem(QQuickItem *parent): QQuickItem(parent){ // By default, QQuickItem does not draw anything. If you subclass // QQuickItem to create a visual item, you will need to uncomment the // following line and re-implement updatePaintNode() // setFlag(ItemHasContents, true);}MyItem::~MyItem(){}void MyItem::read(){ qWarning() << "qml cpp plugin ";}
#pragma once#include <QQmlExtensionPlugin>class QMLCPPPluginPlugin : public QQmlExtensionPlugin{ Q_OBJECT Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")public: void registerTypes(const char *uri);};
#include "qmlcppplugin_plugin.h"#include "myitem.h"#include <qqml.h>void QMLCPPPluginPlugin::registerTypes(const char *uri){ // @uri com.mycompany.qmlcomponents qmlRegisterType<MyItem>(uri, 1, 0, "MyItem");}
qmldir 文件
module MyPlugin
plugin QMLCPPPlugin
编译,生成release和debug QMLCPPPlugin.dll 和 QMLCPPPlugind.dll
2.应用
Application->Qt Quick Application
在应用程序新建文件夹DLL(DLL文件夹和QMLCPPPluginApp.pro同级目录),在DLL新建文件夹MyPlugin(此MyPlugin是qmldir文件中module).
注:如果qmldir中的module制定为 如 com.yourcompany.qmlxxxx 之类的, 那文件夹需要按 . 建立子文件夹,如 com/yourcompany/qmlxxx
把QMLCPPPlugin.dll ,QMLCPPPlugind.dll和qmldir复制到MyPlugin文件夹内。(D:\Test1\QMLCPPPluginApp\QMLCPPPluginApp\DLL\MyPlugin)
指定插件DLL的路径
engine.addImportPath("D:/Test1/QMLCPPPluginApp/QMLCPPPluginApp/DLL/");
如果不指定,在Qt安装文件D:\ProgramFiles\Qt\Qt580\5.8\mingw53_32\qml目录新建文件夹MyPlugin,把QMLCPPPlugin.dll ,QMLCPPPlugind.dll和qmldir复制到MyPlugin文件夹内。
#include <QGuiApplication>#include <QQmlApplicationEngine>int main(int argc, char *argv[]){ QGuiApplication app(argc, argv); QQmlApplicationEngine engine; engine.addImportPath("D:/Test1/QMLCPPPluginApp/QMLCPPPluginApp/DLL/"); engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); return app.exec();}
import QtQuick 2.6import QtQuick.Window 2.2import MyPlugin 1.0Window { visible: true width: 640 height: 480 title: qsTr("Hello World") MainForm { anchors.fill: parent mouseArea.onClicked: { cppPlugin.read() console.log(qsTr('Clicked on background. Text: "' + textEdit.text + '"')) } } MyItem{ id:cppPlugin }}
本文转载自:https://www.cnblogs.com/ike_li/p/6743599.html
- QML C++插件dll引用
- C#引用C++Dll
- SWIG c# 引用 c++dll
- 【引用】QML语言介绍
- 【引用】转载:QML 学习
- C# 中引用vb编写的DLL
- C# DLL文件的生成和引用
- vs2010生成Dll文件并引用dll(C#)
- vs2010生成Dll文件并引用dll(C#)
- vs2010生成Dll文件并引用dll(C#)
- vs2010生成Dll文件并引用dll(C#)
- Qml调用插件
- dll引用
- QML插件扩展(一)
- 为QML创建C++插件
- C#引用c++DLL结构体数组注意事项
- 在VS2010中创建并引用dll(C#)
- vc++中编写Dll,在C#(WPF)中引用
- Spring事务管理的四种方式(以银行转账为例)
- 笔记 纯css绘制多种几何形状链接地址
- 原创文章
- svn服务器创建
- iOS从子视图返回根视图,然后切换tabbar遇到的坑
- QML C++插件dll引用
- 1182数圈圈
- H3C-QoS实例六:优先级重标记与队列调度
- linux sed 每行 行首 插入内容 ceph 批量查看pg 位置
- NCMS网络频道云管理系统V1
- Kotlin&Java程序员福利:轻量Web框架Javalin
- 使用gulp ES6转ES5
- 简单透彻理解JSONP原理及使用
- Uncaught SyntaxError: Unexpected token )