【转】Qt 扩展插件

让基于QT的应用程序支持插件扩展的步骤:
1.    定义一个接口集(只有纯虚函数的类),用来与插件交流。如:
class DbmInterface
{
public:
    virtual ~DbmInterface() {}

    virtual testpro* create(QString &clname) = 0;
};
2. 用宏Q_DECLARE_INTERFACE()将该接口告诉Qt元对象系统
Q_DECLARE_INTERFACE(DbmInterface, "com.trolltech.dbm.DbmInterface/1.0")

3. 应用程序中用QPluginLoader来装载插件。
QPluginLoader loader(".//testplug.dll");

4. 用宏qobject_cast()来确定一个插件是否实现了接口。如果成功则可以直接调用插件接口函数。
QObject *plugin = loader.instance();
if (plugin)
    {
        DbmInterface* dbm = qobject_cast<DbmInterface*>(plugin);
        if (dbm)
            proa = dbm->create(QString(""));
    }



▲写一个插件的步骤:
1.    声明插件类,该类从QObject和该插件希望实现的接口继承而来。
2. 用宏Q_INTERFACES()将该接口告诉Qt元对象系统。
class DbmInterfacePlugin : public QObject, public DbmInterface
{
    Q_OBJECT
        Q_INTERFACES(DbmInterface)

public:
    ~DbmInterfacePlugin(){};

    testpro* create(QString &clname){return new ipro;};
};
3. 用宏Q_EXPORT_PLUGIN2()导出插件(在CPP文件中)。
Q_EXPORT_PLUGIN2(testplug, DbmInterfacePlugin);

▲编译插件来扩展应用程序时,确保插件和应用程序用同样的配置这一点很重要。这意味着如果应用程序是release模式编译的,那么插件也要是release模式。

▲装载插件时,Qt核对每一个插件的联编关键字要和自己的匹配,以保证所装载的是兼容的插件;任何不匹配的插件不会被装载。

▲为了调试可能需要关闭联编关键字校验功能,这可以通过将你运行应用程序的环境的环境变量QT_NO_PLUGIN_CHECK设置为非零来实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt Creator是一个跨平台的集成开发环境(IDE),用于开发基于Qt框架的应用程序。它提供了丰富的功能和工具,方便开发者进行代码编辑、调试、构建和部署等操作。Qt Creator还支持插件开发,允许开发者根据自己的需求扩展和定制IDE的功能。 插件开发是通过使用Qt Creator提供的API来实现的。下面是一些关键的步骤和概念: 1. 创建插件项目:在Qt Creator中,可以使用"New Project"向导创建一个插件项目。选择"Qt Creator Plugin"模板,并按照向导的指导完成项目的创建。 2. 插件结构:插件项目通常包含一个插件类(继承自`ExtensionSystem::IPlugin`)和一个插件描述文件(`.json`格式)。插件类负责实现插件的逻辑,而描述文件用于声明插件的元数据和依赖关系。 3. 插件接口:Qt Creator提供了一系列的接口(如`Core::IEditor`、`ProjectExplorer::IProjectManager`等),用于扩展和定制IDE的功能。插件可以实现这些接口,并在适当的时机注册到Qt Creator中。 4. 插件生命周期:插件Qt Creator启动时被加载,并在IDE的整个生命周期中保持活动状态。插件可以通过重写插件类的虚函数来响应不同的事件和操作。 5. 插件通信:插件之间可以通过信号和槽、接口调用等方式进行通信。Qt Creator还提供了一些全局的服务(如`Core::EditorManager`、`ProjectExplorer::SessionManager`等),插件可以使用这些服务来获取和操作IDE中的资源。 如果你想深入了解Qt Creator插件开发的细节,可以参考Qt Creator的官方文档和示例代码。官方文档提供了详细的API参考和开发指南,示例代码则展示了如何使用API来实现常见的插件功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值