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 = );
~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, , , "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).
把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.6
import QtQuick.Window 2.2
import MyPlugin 1.0
Window {
visible: true
width:
height:
title: qsTr("Hello World") MainForm {
anchors.fill: parent
mouseArea.onClicked: {
cppPlugin.read()
console.log(qsTr('Clicked on background. Text: "' + textEdit.text + '"'))
} } MyItem{
id:cppPlugin
}
}
QML C++插件dll引用的更多相关文章
- Dynamics CRM 注册插件dll到GAC
以server2012为例,搜索cmd,打开红框中的命令框,gacutil.exe -i "dll路径" 通过该命令把需要用到dll注册进gac(这里包括你的插件dll和你插件中引 ...
- jquery插件的引用和扩展应用
引入插件,引用的jquery吆喝开发插件的jquery版本一致,引用插件里面所用的图像img图片等,常用的jquery可以通过对其进行函数描述,直接调用,下例子就是改变特定的颜色,插件的使用是在仿网页 ...
- .Net中使用aliases让相同命名空间的dll引用共存
有些不得已的时候,我们需要同时在代码中使用某个dll的不同版本.比如用低版本的dll中的方法导出数据,然后使用高版本的方法导入数据来实现数据的升级. 又或者需要同时使用第三方的dll不同版本.如何使它 ...
- Noesis.Javascript.dll 引用时报错“找不到指定的模块”
Could not load file or assembly 'Noesis.Javascript.dll' or one of its dependencies. 找不到指定的模块. 通过反编译发 ...
- 重装了Devexpress后项目报Dll引用找不到问题解决办法
最近将我的开发环境从VS2015升级到VS2017,升级完后报如下错误,找不到Dev的引用,明明是重新装了dev为什么找不到呢? 经过查看dll引用地址,发现我的dev一开始是安装在C盘,dll引用路 ...
- ArcGis Classic COM Add-Ins插件dll的安装与卸载
本文是去年<ArcGis Classic COM Add-Ins插件开发的一般流程 C#>一文(以下称“开发流程”)的后续.“开发流程”中写到会有“安装与卸载”系列的文章,今天把它补上. ...
- VS2017中 C# dll引用(C生成dll,C++生成dll)小结 - 简书
原文:VS2017中 C# dll引用(C生成dll,C++生成dll)小结 - 简书 dll引用小结 一.dll与应用程序 动态链接库(也称为DLL,即为“Dynamic Link Library” ...
- 阻止新的csproj工程的dll引用继承
VisualStudio传统的csproj工程中,引用是没有继承功能的.例如,对于如下一个引用关系 App引用Assembly 1 Assembly 1引用Assembly 2 程序App在没有添加A ...
- VS dll 引用依赖
在公司实习过程中,经常遇到三个问题: 开发环境 dll引用依赖 dll版本控制 一般公司都会配置开发/测试/Lab/线上四个环境,之后不管时开发什么项目,都与环境分不开边.这个和dll版本控制暂且记下 ...
随机推荐
- 监听INPUT值的即时变化
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- es7预览
哈哈,es6才刚刚掌握,就给大家介绍es7了. es7的草案其实早已经定下来了,而且更加向着java这些高级语言看齐了 chrome的高版本其实也已经对es7的部分功能实现了!! 1.数组 inclu ...
- 设计模式---对象创建模式之原型模式(prototype)
一:概念 原型模式(Prototype Pattern) 实际上就是动态抽取当前对象运行时的状态 Prototype模式是一种对象创建型模式,它采取复制原型对象的方法来创建对象的实例.使用Protot ...
- CentOS6.x下,tomcat - web项目部署
1. 安装tomcat tomcat安装方法:http://www.cnblogs.com/vurtne-lu/p/6478440.html 2. 配置tomcat 修改server.xml文件 &l ...
- Nginx 学习笔记(五)nginx-vod-module 模块
nginx-vod-module 一.编译 ./configure \ --user=www \ --group=www \ --prefix=/usr/local/openresty \ --wit ...
- 通过read()读文件
一.在POSIX中的定义 #include <unistd.h> ssize_t read(int fd, void *buf, size_t len); 二.调用read()的可能结果 ...
- Bleve代码阅读(二)——Index Mapping
引言 Bleve是Golang实现的一个全文检索库,类似Lucene之于Java.在这里通过阅读其代码,来学习如何使用及定制检索功能.也是为了通过阅读代码,学习在具体环境下Golang的一些使用方式. ...
- Nginx Server 配置
http { include mime.types; // 主模块:实现对配置文件包含的文件设定,可以减少主配置文件的复杂度: default_type application/octet-strea ...
- luogu P1627 [CQOI2009]中位数
传送门 要求有多少个长度为奇数的区间满足某个数为区间中位数 这样的区间,大于中位数的数个数 等于 小于中位数的数个数 用类似于前缀和的方法,设\(X_i\)为\(i\)和数\(b\)形成的区间内,大于 ...
- 信息收集之censys
一.摘要 Censys提供了search.view.report.query.export以及data六种API接口. search接口的请求地址是https://www.censys.io/api/ ...