插件的创建非常简单,但是它可以复用,并且为不同的应用程序扩展类型。使用创建的插件是非常灵活的
解决方案。关于插件一个很好的例子见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引用的更多相关文章

  1. Dynamics CRM 注册插件dll到GAC

    以server2012为例,搜索cmd,打开红框中的命令框,gacutil.exe -i "dll路径" 通过该命令把需要用到dll注册进gac(这里包括你的插件dll和你插件中引 ...

  2. jquery插件的引用和扩展应用

    引入插件,引用的jquery吆喝开发插件的jquery版本一致,引用插件里面所用的图像img图片等,常用的jquery可以通过对其进行函数描述,直接调用,下例子就是改变特定的颜色,插件的使用是在仿网页 ...

  3. .Net中使用aliases让相同命名空间的dll引用共存

    有些不得已的时候,我们需要同时在代码中使用某个dll的不同版本.比如用低版本的dll中的方法导出数据,然后使用高版本的方法导入数据来实现数据的升级. 又或者需要同时使用第三方的dll不同版本.如何使它 ...

  4. Noesis.Javascript.dll 引用时报错“找不到指定的模块”

    Could not load file or assembly 'Noesis.Javascript.dll' or one of its dependencies. 找不到指定的模块. 通过反编译发 ...

  5. 重装了Devexpress后项目报Dll引用找不到问题解决办法

    最近将我的开发环境从VS2015升级到VS2017,升级完后报如下错误,找不到Dev的引用,明明是重新装了dev为什么找不到呢? 经过查看dll引用地址,发现我的dev一开始是安装在C盘,dll引用路 ...

  6. ArcGis Classic COM Add-Ins插件dll的安装与卸载

    本文是去年<ArcGis Classic COM Add-Ins插件开发的一般流程 C#>一文(以下称“开发流程”)的后续.“开发流程”中写到会有“安装与卸载”系列的文章,今天把它补上. ...

  7. VS2017中 C# dll引用(C生成dll,C++生成dll)小结 - 简书

    原文:VS2017中 C# dll引用(C生成dll,C++生成dll)小结 - 简书 dll引用小结 一.dll与应用程序 动态链接库(也称为DLL,即为“Dynamic Link Library” ...

  8. 阻止新的csproj工程的dll引用继承

    VisualStudio传统的csproj工程中,引用是没有继承功能的.例如,对于如下一个引用关系 App引用Assembly 1 Assembly 1引用Assembly 2 程序App在没有添加A ...

  9. VS dll 引用依赖

    在公司实习过程中,经常遇到三个问题: 开发环境 dll引用依赖 dll版本控制 一般公司都会配置开发/测试/Lab/线上四个环境,之后不管时开发什么项目,都与环境分不开边.这个和dll版本控制暂且记下 ...

随机推荐

  1. 一篇写得很好的关于lct的博客

    连接 orz orz

  2. react与umi

    我们知道umi 是一个编译工具,但它同时也是一个前端框架.它对社区的 webpack,react-router 等进行的封装, 使得我们可以基于它快速搭建一个 React 项目. 第一步:安装umi ...

  3. Centos7.2安装搜狗拼音

    方法一: Fedora 19/20/21/rawhide 使用以下命令添加源: # yum install dnf-plugins-core # dnf copr enable mosquito/my ...

  4. SDRAM学习笔记(二)

    上一篇博客主要讲解了一下SDRAM整体结构以及PCB方面的注意事项.接下来讲解一下需要用到的一些命令. 1.常用命令的缩写 上述是常用到的一些指令集. 2.模式寄存器   (1)突发长度 通过对A0~ ...

  5. 私有仓库GitLab快速入门篇

    私有仓库GitLab快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 安装文档请参考官网:https://about.gitlab.com/installation/#ce ...

  6. java了解哪些锁

    问题: 1.Java里的锁了解哪些? 说了Lock和synchronized  它们的使用方式和实现原理有什么区别呢?使用的话,synchronize用于方法和代码块,可以锁对象和类以及方法,Lock ...

  7. HDU - 5419 Victor and Toys(组合计数)

    http://acm.hdu.edu.cn/showproblem.php?pid=5419 题意 n个物品,标号1-n,物品i有权值wi.现在有m个区间[l,r],从中任意选三个区间i,j,k,求物 ...

  8. LaTeX简历模板

    %# -*- coding:utf-8 -*- %% start of file `template_en.tex'. %% Copyright 2006-1008 Xavier Danaux (xd ...

  9. SQL语句(三)数据表的修改

    数据表的修改 1. 创建实验表people people CREATE TABLE people ( name ), gender ), birthday ) ) 2.修改表 ALTER TABLE ...

  10. toolbar 相关

    1.改变toolbar 返回键和扩展按钮颜色,只需要在style文件中添加这一行即可: 2.toolbar的title是否显示是这样控制的: