QtCreator插件框架学习03-核心插件

1、核心插件
1.1、插件pro文件
include(../../plugins.pri)

QT += widgets

DEFINES += COREPLUGIN_LIBRARY

TARGET = coreplugin

LIBS += \
    -lextensionsystem

HEADERS += \
    coreplugin.h

SOURCES += \
    coreplugin.cpp

DISTFILES += \
    coreplugin.json



这里只实现一个简单的插件,该插件依赖 extensionsystem,因此LIBS添加extensionsystem库;

coreplugin.json 文件为插件的描述文件,内容如下:

{
    "Name"           :  "CorePlugin",
    "Version"        :  "0.0.1" ,
    "CompatVersion"  :  "0.0.1",
    "Required"       :  true,
    "Vendor"         :  "MakerInChina" ,
    "Copyright"      :  "(C) 2021 The Qt Inc" ,
    "License"        :  "GPL",
    "Category"       :  "Core" ,
    "Description"    :  "MainWindow"
}
1.2、定义插件
#ifndef COREPLUGIN_H
#define COREPLUGIN_H

#include <QObject>
#include <extensionsystem/iplugin.h>

#include <QMainWindow>

class CorePlugin : public ExtensionSystem::IPlugin
{
    Q_OBJECT
    Q_PLUGIN_METADATA(IID "monkeyqdk.qtc.plugin" FILE "coreplugin.json")
public:
    explicit CorePlugin(){}

    ~CorePlugin(){}

    bool initialize(const QStringList &arguments, QString *errorString) override;
    void extensionsInitialized() override;
    QObject* remoteCommand(const QStringList &, const QString &, const QStringList &) override;

private:
    QScopedPointer<QMainWindow> m_mainWindow;

signals:

};

#endif // COREPLUGIN_H

  • 插件需要继承 ExtensionSystem::IPlugin 插件接口;
  • Q_PLUGIN_METADATA 定义插件的IID和插件描述文件;
  • 重写initialize、extensionsInitialized、remoteCommand 三个函数;
1.3、实现插件
#include "coreplugin.h"

#include <QLabel>
#include <QDebug>

bool CorePlugin::initialize(const QStringList &, QString *)
{

    qDebug()<<__FILE__<<" at line "<<__LINE__<<" :"<<" coreplugin initialize";

    QMainWindow *mwin = new QMainWindow;

    QLabel *label = new QLabel(mwin);
    label->setText("corePlugin");
    mwin->setCentralWidget(label);
    mwin->setMinimumSize(800,400);
    mwin->setWindowTitle("MonkeyQDK 0.01 by MakerInChina");
    m_mainWindow.reset(mwin);

    return true;
}

void CorePlugin::extensionsInitialized()
{
//    m_mainWindow->extensionsInitialized();
}

QObject *CorePlugin::remoteCommand(const QStringList &, const QString &, const QStringList &)
{
    m_mainWindow->show();

    return nullptr;
}

  • initialize 函数中创建一个主窗口;
  • remoteCommand函数中显示窗口;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值