QtCreator插件开发(一)——QtCreator插件实例
本文将使用QtCreator-2.8.1版本进行插件开发,由于QtCreator-2.8.1的插件机制进行了部分更改,因此将根据QtCreator-2.8.1插件机制为基础撰写本文。
一、QtCreator源码编译
1、构建目录的创建
QtCreator工程的源码编译推荐在独立工作目录进行,避免源码被污染。在QtCreator工程的根目录下创建build目录。
2、生成工程MakeFile文件
在build目录下使用命令行运行:
qmake ../qtcreator.pro -recursive
如果报错,错误信息如下:QMAKESPEC has not been set, so configuration cannot be deduced.
解决方法:
export QMAKESPEC=/usr/local/Trolltech/Qt-4.8.6/mkspecs/linux-g++
3、编译构建
在build目录下使用命令行运行:
make
不同的操作系统可能为mingw32-make或nmake。
4、结果查看
编译完成后,在build/bin目录下查看并运行qtcreator.exe。
二、简单插件开发
1、创建插件工程
学习QtCreator插件开发的最好方式就是实际动手编写一个QtCreator插件。本文将编写一个什么也不做的QtCreator插件DoNothing,目的在于熟悉QtCreator基本的类,感受创建一个QtCreator插件的过程。
本文将不依赖于Qt Creator提供的项目向导,而是直接以.pro文件创建插件。
在$$QT_CREATOR_ROOT/src/plugins目录下创建一个目录DoNothing。插件的所有源码放在DoNothing目录中。
在qt-creator-2.8.1-src/src/plugins目录创建DoNothing目录,DoNothing.pro文件内容如下:
DoNothing.pro:
TEMPLATE = lib
TARGET = DoNothing
include(../../qtcreatorplugin.pri)
#DESTDIR = $$IDE_PLUGIN_PATH/Scorpio
PROVIDER = Scorpio
include(../../plugins/coreplugin/coreplugin.pri)
HEADERS += DoNothingPlugin.h
SOURCES += DoNothingPlugin.cpp
OTHER_FILES += DoNothing.pluginspec \DoNothing_dependencies.pri
工程配置文件DoNothing.pro配置了插件的如下内容:
A、TEMPLATE声明DoNothing插件是一个库
B、TARGET声明目标文件名称,目标文件将是DoNothing.dll或是libDoNothing.so;
C、配置DoNothing使用qtcreatorplugin.pri中定义的设置;
D、DESTDIR指定目标输出目录为$$IDE_PLUGIN_PATH/Scorpio。默认情况下是$$IDE_PLUGIN_PATH/QtProject。如果指定了输出目录,需要将生成的插件拷贝到$$IDE_PLUGIN_PATH/QtProject目录,QtCreator才能加载成功。
E、PROVIDER为提供插件的公司或者组织名字;
F、配置DoNothing使用coreplugin.pri定义的设置;
G、HEADERS 提供组成插件的.h文件
H、SOURCES提供组成插件的.cpp文件
I、OTHER_FILES提供插件需要的其它文件,如依赖文件
2、标记要编译的插件
在qt-creator-2.8.1-src/src/plugins/plugins.pro文件尾添加要编译的插件:
SUBDIRS += DoNothing
确保再次编译QtCreator的时候,DoNothing插件会与其它插件一起被编译。
3、插件实现
在目录下创建DoNothing插件的实现文件。所有的插件都需要实现IPlugin接口。$$QT_CREATOR_ROOT/src/plugins/
DoNothing/DoNothingPlugin.h文件如下:
#ifndef DONOTHINGPLUGIN_H
#define DONOTHINGPLUGIN_H#include <extensionsystem/iplugin.h>class DoNothingPlugin : public ExtensionSystem::IPlugin
{
public:DoNothingPlugin();~DoNothingPlugin();void extensionsInitialized();bool initialize(const QStringList & arguments, QString * errorString);void shutdown();
};#endif // DONOTHINGPLUGIN_H
DoNothingPluigin.cpp文件如下:
#include "DoNothingPlugin.h"
#include <QtPlugin>
#include <QStringList>DoNothingPlugin::DoNothingPlugin()
{// Do nothing
}DoNothingPlugin::~DoNothingPlugin()
{// Do notning
}bool DoNothingPlugin::initialize(const QStringList& args, QString *errMsg)
{Q_UNUSED(args);Q_UNUSED(errMsg);return true;
}void DoNothingPlugin::extensionsInitialized()
{// Do nothing
}void DoNothingPlugin::shutdown()
{// Do nothing
}Q_EXPORT_PLUGIN(DoNothingPlugin)
initialize()函数会在Qt Creator请求插件初始化时被调用,常用于初始化插件的内部状态和插件注册actions/objects到QtCreator。当插件依赖的所有资源都被加载后,initialize()函数才会被调用。初始化成功返回true,用于告诉QtCreator本插件已经初始化成功。如果初始化不成功,应该在errMsg中存储可读的错误信息,供QtCreator在界面上显示出来。
extensionsInitialized()函数在插件初始化后被调用(例如initialize()函数调用后)。extensionsInitialized()函数会由第一个依赖于本插件的其他插件进行调用。
shutdown()函数在插件即将被卸载的时候调用。
Q_EXPORT_PLUGIN()宏用于将类导出。
4、编写pluginspec插件描述文件
每个插件都需要提供一个插件描述文件pluginspec,用于提供关于插件的元数据,例如版本、依赖项等。DoNothing插件的pluginspec文件DoNothing.pluginspec内容如下:
<plugin name="DoNothing" version="1.0.0" compatVersion="2.8.1"><vendor>Scorpio.org</vendor><copyright>(C) 2010-2011 Scorpio.org</copyright><license>Do anything you want.</license><description>A plugin that does nothing.</description><url>http://www.scorpio.net</url><dependencyList><dependency name="Core" version="2.8.1"/></dependencyList>
</plugin>
pluginspec文件是一个XML文件,提供了如下信息:
插件名称:插件名称用于作提供插件实现的库的名称
插件版本号
要求的Qt Creator的版本号
插件提供者。
版权。
协议文本。
插件描述。
插件提供者的URL。
依赖列表。列出本插件依赖的所有插件,Qt Creator将保证此处列出的所有依赖项都加载并且初始化后采取加载本插件。
5、编写插件依赖描述文件
DoNothing.pro会利用qtcreatorplugin.pri文件检查插件相应的依赖信息。因此需要创建一个插件依赖描述文件xxx_dependencies.pri。
DoNothing_dependencies.pri文件内容如下:
QTC_PLUGIN_NAME = DoNothingQTC_PLUGIN_DEPENDS += \Coreplugin
文件说明了插件的名称和依赖
6、编译插件
DoNothing目录下文件如下:
从命令行进入build目录,执行如下命令:
qmake ../qtcreator.pro -recursivemake
/build/lib/qtcreator/plugins目录下会有一个QtProject目录,即编译链接的插件的目录。
7、插件查看
运行build/bin目录下的QtCreator,在帮助菜单中“已安装插件”的对话框中可以找到DoNothing插件:
QtCreator插件开发(一)——QtCreator插件实例相关推荐
- idea插件开发--服务-翻译插件
gitee地址:https://gitee.com/jyq_18792721831/studyplugin.git idea插件开发入门 idea插件开发–配置 idea插件开发–服务-翻译插件 id ...
- 《Abaqus GUI程序开发指南(Python语言)》——第一章 概述1.1 简单插件实例——创建带孔板有限元模型...
本节书摘来自异步社区<Abaqus GUI程序开发指南(Python语言)>一书中的第1章,第1.1节,作者: 贾利勇 , 富琛阳子 , 贺高 , 周正光 更多章节内容可以访问云栖社区&q ...
- jQuery起点教程之有序化插件实例
jQuery起点教程之有序化插件实例是一篇使用jquery的tablesorter插件来实现一些功能效果的教程,大家可以认真学习一下.Sort me将我有序化:使用tablesorter插件进行表格排 ...
- FastAdmin插件开发辅助增强插件
本人开发的FastAdmin插件开发辅助增强插件 不改变官方的开发习惯,但更丝滑,尽最大的努力生成你想要的代码 非常重要 非常重要 非常重要 写在最前面是为了不要漏了,导致插件没有正常工作. 编写代码 ...
- PHP写的电视直播插件实例创建流程
PHP写的电视直播插件实例创建流程 这是最近写的一个PHP电视直播插件实例. 作者:G.FLOWER 主页:https://wdc.store 目录结构: 创建zb目录,可放在网站二级目录 创建zby ...
- 前端压缩图片 -- vue项目使用localResizeIMG插件 -- 实例
前端压缩图片 -- vue项目使用localResizeIMG插件 -- 实例 本博没有新的东西, 都是东拼西凑的. 但是, 组合出了个宝贝, 包括: 文件类型/宽高/大小的校验, 还有展示图片 参照 ...
- 【Chrome浏览器插件开发】浏览器插件运行机制03之实战使用Vue.js 3 + Vite 2开发出简易的浏览器插件(含源码)
文章目录 知识点: 一.使用 vite 创建项目 1.1 环境搭建 1.2 安装vite工具 1.3 创建vite项目 1.4 进入项目并安装依赖 1.5 修改端口 1.6 运行项目 二.创建项目资源 ...
- QtCreator插件开发(四)——QtCreator编辑器
一.HTML编辑器核心类和接口简介 1.HTML编辑器简介 QtCreator最基本的功能是一个文本编辑器.QtCreator还提供了编辑UI文件.QRC文件.PRO/PRI文件以及EXE/DLL/S ...
- QtCreator格式化代码---Beautifier插件使用方式
开启Beautifier插件支持 Qtcreator进入Help->About Plugins -> C++ -> Beautifier选中复选框,之后重启. 再进入Tools-&g ...
最新文章
- 双向链表_如何通过Java单次查找链表的中间元素
- 【C 语言】二级指针 内存模型图 ( 指针数组 | 二维数组 | 自定义二级指针内存 )
- 从理论到实践,机器人SLAM技术详解
- centos 6安装报错
- junit测试spring_使用Spring JUnit规则进行参数化集成测试
- 阿里云杨敬宇:四层技术构建基于城市场景的边缘计算
- MySQL常见错误代码(转)
- 使用dd工具对磁盘RAID5和10进行I/O性能测试
- MATLAB对表达式进行降幂排列,MATLAB上机答案.doc
- 二级c语言考试系统安卓,二级C语言考试系统
- openwrt 添加usb网卡_【沙发管家】路由器USB接口的用处你真的了解么?
- Mac上有哪些好用的写作软件?四类写作软件总有一款适合你!
- C# E-Mail邮件发送
- Windows 10 驱动开发 及 驱动签名
- 视频编码第一节:H.265/HEVC原理——入门
- 手机计算机表白公式,表白公式数学公式
- 程序员的种种崩溃瞬间
- 2023华中师范大学新传考研经验
- 超详细的C++入门学习(命名空间,缺省参数,内联函数,函数重载等)
- 从蓝海战略到长尾理论
热门文章
- canvas 像素操作
- django 4.0 应用程序的创建和配置(分布式布置)
- python爬虫+pygal交互式可视化爬取大学QS排名
- Leetcode刷题100天—566. 重塑矩阵(数组)—day25
- 携手数字创新 共筑国产生态 7月份AntDB与5款产品完成互认证
- 《数据结构与算法》—— O(3N)=O(N) ?
- easyui获取图片路径_在线计算图片热点植入位置的方法与流程
- Excel-多条件排名时间排名
- 利用java知识做一个模拟qq登入模拟界面
- 5G换手机不必换号 中国移动已确认资费不会高于4G