笔者测试使用的Qt版本是4.4.1,这个版本的build system有个小毛病,就是如果你指定的qconfig参数实际上没有qconfig-xxx.h文件对应, build不会停止,它只会给出一个不起眼的提示,编译过程会继续, 这一点挺让人费解的。而且这种情况下Qt编译使用的配置基本上和fullconfig相同,鉴于它的让人迷惑的举动,个人觉得有必要提...
CONFIG += plugin QT += widgets INCLUDEPATH += ../MainWindow TARGET = $$qtLibraryTarget(calplugin) DESTDIR = ../plugins EXAMPLE_FILES = calplugin.json HEADERS += \ calplugin.h SOURCES += \ calplugin.cpp CONFIG += install_ok 主工程中调用插件 #include <QWidget> #include "calinterface....
2.创建插件(类),pro 文件中添加“CONFIG += plugin”。 3.使用/加载插件 插件是一种遵循一定规范的应用程序接口编写出来的程序,定位于开发实现应用软件平台不具备的功能的程序。 插件这个东西,唯一的作用就是“扩展程序的功能,丰富程序的应用”。 Qt提供了两种API用于创建插件: 一种是高阶API,用于扩展Qt本身的功...
注意:type 选择 Qt Plugin 修改plugin .pro 文件,将 主项目作为头文件加进来;设置生成 dll 目录; INCLUDEPATH += ../TestProject DESTDIR = ../TestProject/plugins 1. 2. completed code QT += gui TEMPLATE = lib CONFIG += plugin CONFIG += c++17 INCLUDEPATH += ../TestProject # You can make ...
CONFIG += install_ok # Do not cargo-cult this! 在插件子工程中添加一个插件类 EchoPlugin,实现如下: EchoPlugin.h 文件: #ifndefECHOPLUGIN_H#defineECHOPLUGIN_H#include<QObject>#include<QtPlugin>#include"EchoInterface.h"// 3.声明插件类,插件类继承自QObject和插件实现的接口classEchoPlugin:public ...
classPluginInterface { public: virtual~PluginInterface(){} virtualvoidrecMsgFromManager(PluginMetaData)=0;//接收来自插件管理器的消息 virtualvoidsendMsgToManager(PluginMetaData)=0;//发生消息到插件管理器 }; //一定是唯一的标识符 #define QT_BEGIN_NAMESPACE ...
1 演示示例创建的是一个基于QWidget类的窗体程序,当然你要使用其他窗体类也是可以的。项目名称为EchoWindow,窗体类名采用的是默认的widget。项目位于明为MyPlugin的目录下。整个的目录结构如下:2 具体程序界面如下。点击发送后,将文本框的内容经过插件的简单处理后在黑色框线的标签控件中显示出来。二、建立接口类 ...
步骤一:将CONFIG+=static添加到插件的.pro文件中。 步骤二:在应用程序中使用Q_IMPORT_PLUGIN()宏。 步骤三:如果插件附带qrc文件,请在应用程序中使用Q_INIT_RESOURCE()宏。 步骤四:使用.pro文件中的LIBS将应用程序与插件库链接。 注意:如果不使用qmake构建插件,则需要确保已定义QT_STATICPLUGIN预处理器宏。
myconfig.ui HEADERS 指定项目中所有的头文件。 qmake会自动检测是头文件的类中是否需要moc,并增加适当的依赖关系和文件到项目中,来生成和链接moc文件。 例如: HEADERS = myclass.h login.h mainwindow.h INCLUDEPATH 指定编译项目时应该被搜索的#include目录。
QStyle *MyStylePlugin::create(const QString &key) { if (key.toLower() == "mystyle") return new MyStyle; return 0; } 注意,由于 QStylePlugin 不区分大小写,create 函数的实现中使用了小写来判断,但是其他的插件基类区 分大小写时不可以转换成小写判断。