创建自定义插件
1. 创建工程
QT4 Designer PlugIn
后续配置都使用默认值,这里我们创建一个QHist插件。
2. 新建后,直接编译,会产生如下错误
1>LINK : fatal error LNK1181: cannot open input file 'QtDesignerd.lib'
这是因为此工程默认引用的是QtDesignerd.lib库,更改其为版本对应的库即可消除故障,我这里使用的是
QtDesignerd4.lib(Release版本使用QtDesigner4.lib)。
3. 修改文件,增加声明,如下:
修改前:
#include <QtGui/QWidget>
class QHist : public QWidget
修改后
#include <QtGui/QWidget>
#include <QtDesigner/QDesignerExportWidget>
class QDESIGNER_WIDGET_EXPORT QHist : public QWidget
如果不执行此操作,后续应用程序连接时,会上报链接错误:
error LNK2019:
4. 实现插件,这里我只是在此控件中绘制了一条直线。
重载paintEvent事件
protected:
void paintEvent(QPaintEvent *event);
void QHist::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawLine(0, 0, 10, 10);
}
这时,编译会报错误,原因是qhist.cpp中还缺少头文件,引入即可消除:
#include <QtGui>
5. 编译Release版本
6. 到此我们就完成了插件的创建;
使用自定义插件(QT Designer)
1. 将编译生成的相关文件拷贝到QT的plugins/designer目录;
2. 将qhist.h文件拷贝到QT所在的include/QtGui目录;
到此,打开QT Designer,即可看到新增的QHist插件了;
使用自定义插件(APP)
1. 将编译生成的相关文件拷贝到用用工程所在的工程目录;
到此,编译应用程序,运行即可正常使用自定义的插件了;
创建多个插件到一个插件库
前面介绍的是生成单个自定义插件,QT还支持将多个自定义插件生成到一个插件库中,如下:
1. 创建一个插件库工程,工程名为MyCustomWidgets;
2. 创建新的类,分别是QHist,QHistPlugin,QScatter,QScatterPlugin,相关实现代码参见上述单个插件的实现,和先前的唯一差别就是:源文件末尾不在需要添加Q_EXPORT_PLUGIN2声明;
3. 修改MyCustomWidgets的定义和实现,如下:
// 头文件
#include <QtDesigner/QtDesigner>
#include <QtCore/qplugin.h>
#include "qhistplugin.h"
#include "qscatterplugin.h"
class MyCustomWidgets: public QObject, public QDesignerCustomWidgetCollectionInterface
{
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetCollectionInterface)
public:
MyCustomWidgets(QObject *parent = 0);
virtual QList<QDesignerCustomWidgetInterface*> customWidgets() const;
private:
QList<QDesignerCustomWidgetInterface*> widgets;
};
// 源文件
#include "mycustomwidgets.h"
MyCustomWidgets::MyCustomWidgets(QObject *parent)
: QObject(parent)
{
widgets.append(new QHistPlugin(this));
widgets.append(new QScatterPlugin(this));
}
QList<QDesignerCustomWidgetInterface*> MyCustomWidgets::customWidgets() const
{
return widgets;
}
Q_EXPORT_PLUGIN(MyCustomWidgets)
这里从QDesignerCustomWidgetCollectionInterface派生了一个子类MyCustomWidgets;
4. 编译Release版本,将此库文件拷贝到Designer相关目录,此时新打开Qt Designer将可以看到两个自定义插件;
分享到:
相关推荐
1.包含自定义消息 2.包含Panel类型的自定义插件 3.包含Display类型的自定义插件
cordova ios 自定义插件例子,新手入门用
mybatis自定义插件源码,实现了在插入数据记录时自动添加自定义字段值,sql拦截和改造。
ionic自定义插件开发调用原生android代码,带jar包的插件开发
cordova添加自定义插件demo,有问题请留言http://www.cnblogs.com/tutuskys/p/5012062.html
Android Cordova 插件开发之编写自定义插件源码
PhoneGap iOS 自定义插件
MyBatis Generator自定义插件实现自定义Mapper,方便代码复用。
cordova3.0版本以上ios自定义插件demo及插件
CKeditor 自定义插件 需求:我需要在编辑文本的时候,选择一段文字,点击自定义的按钮,就能够在这段文字后面增加一个图标,图标超链接去一个地址,以选中的文字作为参数。
此模块为按键精灵会员模块,献给热爱vb,需要自己写插件的朋友!
ECSHOP插件 全站URL自定义插件,支持目录形式
springboot项目 mybatis generator 生成自定义 注释(maven项目 打包被 其他项目引用的demo)
qt自定义插件:主要说明在qt中进行自定义插件的方法及接口函数,以及一些使用实例,方便初学者z在qt下进行自定义插件,封装适合自己的插件
Office Word、 OutLook 自定义开发 内容包括 顶部菜单 侧边栏 等功能
Typescript农历库,支持各类黄历数据...支持自定义插件。lunisolar 是一个使用Typescript编写的专业农历库, 可取得各类农历数据,参考中国中代书籍,数据来源有依有据。支持多语言(可自定义语言包),支持自定义插件。
NULL 博文链接:https://royal2xiaose.iteye.com/blog/1555594
chrome自定义插件实例,实现访问网页先调用自定义js脚本,可以用于日常自动点赞,自动访问等等访问情景
Qt -自定义插件。 具体可看博客了解:https://blog.csdn.net/automoblie0/article/details/105399584