2019独角兽企业重金招聘Python工程师标准>>>

从技术架构角度来说,Qt Creator 可以看做是一个插件平台,其大部分功能都是以插件的形式提供的。

本系列文章将着重介绍如何开发 Qt Creator 插件,以扩展 Qt Creator 的现有功能。虽然 Qt Creator 的最新版本已经提供了插件项目,但是从最底层开发 Qt Creator 插件,对于理解其架构也有相当的作用。因此,本文将不依赖于 Qt Creator 提供的项目向导,而是直接以 .pro 文件创建插件。同时,希望在学习 Qt Creator 插件开发基础之上,了解 Qt Creator 的架构。本系列文章原文出自 http://www.vcreatelogic.com/downloads/files/Writing-Qt-Creator-Plugins.pdf。

本系列文章在 Windows 平台上,使用 mingw 版本 Qt 进行测试。Linux 平台请自行进行修改。

当我们从 http://qt.nokia.com/downloads 下载 QtSDK 时,我们已经获得了最新版本的 Qt Creator 。如果你下载的是 Windows 平台 mingw 版本的 QtSDK,其中包含的 Qt Creator 是使用 MSVC 进行编译的,而 Qt Framework 和 Qt Designer 则使用的是 mingw(这也就是为什么有时候我们的插件能够在 Qt Designer 找到,但在 Qt Creator 却看不到)。因此,如果我们要使用 mingw 版本的 QtSDK 进行 Qt Creator 插件开发,需要自己编译 Qt Creator 。如果未来版本,QtSDK 提供的 Qt Creator 也是 mingw 编译的,那么,我们最好还是自己手动编译一下 Qt Creator 。这样我们就可以获得一个 debug 版本的 Qt Creator ,从而更有利于插件的调试。(这里说明一下,Windows 平台下的 Qt Creator 之所以提供 MSVC 版本的,完全是技术原因。因为 mingw 缺少一些 Qt Creator 所必需的 Windows API。)

在这个页面上,我们可以找到 Qt Creator 源代码的下载链接:http://qt.nokia.com/downloads/qt-creator-source-package。 在本文写作时,Qt Creator 最新版本是 2.2.1。我们下载下来一个 zip 压缩包,解压之后,我们在与 Qt Creator 源代码平级的目录中创建一个 build 文件夹,用于放置编译后的文件,以免编译的过程文件同源代码混在一起(build 文件夹必须与 Qt Creator 源代码文件夹平级,这是 qmake 做 shadow build 时的要求)。于是,现在的目录结构如下所示:

新版本的 Qt Creator 提供了一个 Qt Quick Designer,用于 Qt Quick 的可视化设计。不过,这个插件需要用到 Qt 的私有头文件。如果你是从 Nokia 直接下载的 QtSDK(就像上文说明的那样)安装,是没有这些私有头文件的。解决的办法是下载 Qt 的源代码(可以在 Qt libraries 这里找到一个 zip 的下载地址)。(这是 Qt Creator 已知的一个 bug,可以在这里找 到详细信息。)在下载 Qt 源代码之后,将 {Qt-source-code}\src\corelib\kernel\qwineventnotifier_p.h 复制到 {QtSDK-path}\Desktop\Qt\4.7.3\mingw\include\QtCore\private 这个文件夹下(没有的话请自行创建)。

然后,我们运行“开始菜单\Qt SDK\Desktop\Qt 4.7.3 for Desktop (MinGW)”。此时会启动已经设置好 Qt 环境变量的命令提示符界面。然后使用 cd 命令,进入我们刚刚创建的 build 文件夹。执行命令:

qmake ../qtcreator.pro “QT_PRIVATE_HEADERS=D:/Develop/QtSDK/Desktop/Qt/4.7.3/mingw/include”

其中,D:/Develop/QtSDK/Desktop/Qt/4.7.3/mingw/include 这个路径用于指定 Qt include 文件夹的位置。配置结束后,使用

mingw32-make

开始真正的编译(由于我们使用的是 mingw 版本的 QtSDK,所以使用 mingw32-make。当然,你也可以使用 nmake 使用 MSVC 进行编译。不过前面已经说过,我们这篇文章是基于 mingw 的)。经过一段时间的编译(豆子的笔记本花了大概 75 分钟,硬盘占用 2.5G),如果没有错误的话(豆子在编译时会有找不到 qwineventnotifier_p.h 文件,在执行前面的修复之后即可通过。另外还可能会有一个找不到 ide_version.h 文件。如果出现这个问题,可以将 build\src\plugins\coreplugin 目录中的 ide_version.h,复制到 {qtcreator-2.2.1-src}\src\plugins\coreplugin), 我们就会在 build\bin 下面找到 qtcreator.exe 可执行文件。双击运行一下,如果一切正常,那么恭喜你!一个 debug 版本的 Qt Creator 已经编译完成了!(可能会有找不到 dll 的错误,如果出现的话请自行修复路径。启动我们编译的 Qt Creator 会很慢,因为这是 debug 版本的。)

最后强调一点,一定要从源代码编译 Qt Creator ,否则,后面的插件开发的编写和测试工作可能会有许多问题。

转载于:https://my.oschina.net/u/2306127/blog/371230

Qt Creator 插件开发(1):编译 Qt Creator相关推荐

  1. 【Qt】Visual Studio编译Qt项目报Qt Version错误

    00. 目录 文章目录 00. 目录 01. 问题描述 02. 开发环境 03. 问题分析 04. 问题解决 05. 附录 01. 问题描述 使用Visual Studio编译Qt项目时候,报以下错误 ...

  2. 【Qt】QTest:编译Qt单元测试程序

    一.使用方法 1.测试程序源码 TestQString.pro QT += testlib QT -= gui TARGET = tst_TestQStringTest CONFIG += conso ...

  3. 中标麒麟linux卸载qt,国产化 银河麒麟编译Qt程序的问题汇总 | 阿拉灯

    Run in terminal 莫名奇妙软件无法在QtCreator中运行或者调试,main函数都无法进入,QtCreator中一运行就崩溃,并跳到汇编界面,这多半和代码没什么关系,我这里是将项目-& ...

  4. 树莓派3B+ 编译Qt源码

    最近想在树莓派上安装个Qt的环境,正好手头上有之前玩过的树莓派3B+(4B去年加价卖给矿老板了),所以就把之前用来做游戏机的树莓派3B+来搭建环境了. 首先当然是刷系统,我选择的刷系统的方式是去官方下 ...

  5. qt creator编译qt工程时报错:undefined reference to

    qt creator编译qt工程时报错:undefined reference to qt creator编译qt工程时报错 该错误指向了本地文件,且经过调研知道,该类错误一般都是链接问题. 仔细查看 ...

  6. QT自定义窗口插件在QT Creator的应用

    根据<C++ GUI Programming with Qt 4,Second Edition>中第5章的"在Qt设计师中集成自定义窗口部件"小节,使用插件法生成的窗口 ...

  7. Ubuntu 17.10安装Qt 5.10环境与Qt Creator 4.5开发工具(转自linux公社)

    记录下在Ubuntu 17.10搭建Qt环境与安装Qt Creator开发工具的过程.机器装的Linux是Ubuntu 17.10,16.04与17.04的应该也相同. Qt 5.10和Qt 3D S ...

  8. QT,QT/E,Qtopia,qt creator的联系与区别

    关于qt,qte,qtopia,qt creator它们之间的区别和联系,相信对所有刚刚入门qt的同学来说都是很模糊的.我在刚开始接触qt的时候也是这样,而且我第一次接触的是qte,因为要在arm上开 ...

  9. linux ubuntu QT 下载和安装(Qt Creator)

    下载地址:https://download.qt.io/ 为什么选5.14版本,因为其他几个没发现 用迅雷下,下好后拷贝到ubuntu里,切换root用户,给安装包赋777权限 chmod 777 q ...

最新文章

  1. 微服务和容器技术有风险,望君三思而后行
  2. 100个必会的python脚本-学会这个Python库,至少能减少100行代码
  3. spring----注解
  4. 为什么多个线程不可能同时抢到一把锁_并发基础理论:原子性问题、锁、管程...
  5. java 微信证书文件,CertificateDownloader
  6. .Net中如何操作IIS(原理篇)
  7. python求解LeetCode习题Find the First Missing Positive Number
  8. Canny边缘检测 原理python代码
  9. 漏洞C:/Windows/Fonts/csrss.exe文件找不到简单查找方法
  10. uniapp对接阿里云OSS前端直传
  11. HSV和RGB相互转换
  12. wordpress面包屑-wordpress面包屑设置方法
  13. 计算机主机usb插口松,台式电脑音频接口坏了or接触不良?用这两个方法轻松解决,还不需要花什么钱...
  14. 如何使用PTGUI全景合成软件进行照片拼接
  15. Configure Database Mirroring
  16. 结合stata和pyecharts对双11淘宝销量数据分析(进度5%,咯咯咯 我鸽了)
  17. seaweedfs调研
  18. excel做汇总如何操作?
  19. 改革春风吹满地(HDU_2036)
  20. python常用库详解,超详细

热门文章

  1. 巴特沃斯带通滤波器matlab程序_带通带阻滤波器频率计算方法如何算
  2. python 自带的range是不能实现对小数的操作的,如果要对小数操作可以使用numpy...
  3. Hadoop mapreduce框架简介
  4. 根据痛点分析制作软件
  5. win8.1怎么安装iis
  6. thinkPHP学习笔记(2)
  7. List for game to play latter
  8. 数学图形(1.2)Sin曲线
  9. 让Windows下的Tomcat将控制台信息记录到日志
  10. 简单快速开发C\S架构程序用最简单的不分层最快的效率达到功能要求的例子程序FrmKnowledge日积月累功能的实现...