QT插件开发(1)-- 创建并调用插件

首先我们来创建一个插件工程:

选择以下工程模板

插件名称叫做:Plugin01

然后自动生成以下文件:

 

接下来添加一个头文件,创建插件的基类,定义插件里要实现的内容,如下:

然后让Plugin01继承这个接口类和QObject类,并实现接口中定义的函数,如下:

点击构建,这时候在生成目录下会生成库文件:

 好了,插件创建完成了,我们再来创建一个工程调用这个插件。

创建一个普通的工程,添加一个按钮,调用这个插件,界面如下

把上面生成的.a库文件添加到调用程序的工程文件中

在调用程序的exe文件目录下创建一个plugins文件夹并将上面生成的.dll文件复制进去,如下

然后把插件工程中的接口基类头文件添加到调用工程中,这时文件结构:

添加调用插件的代码:

    QDir pluginsDir(QDir::currentPath());
    pluginsDir.cd("plugins");

    foreach (QString fileName, pluginsDir.entryList(QDir::Files))
    {
        QFileInfo pluginFileInfo(fileName);
        if (pluginFileInfo.completeSuffix() == "dll" ||
            pluginFileInfo.completeSuffix() == "so")
        {
            QPluginLoader pluginLoader(pluginsDir.absoluteFilePath(fileName), nullptr);
            QObject *plugin = pluginLoader.instance();
            if (plugin)
            {
                PluginInterface *monster = qobject_cast<PluginInterface *>(plugin);
                qDebug() << monster->name();
            }
        }
    }

效果如下:

基类指针调用子类中的方法,就是c++中的多态 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值