繁体   English   中英

如何创建从QWidget继承的Qt插件

[英]How to create a qt plugin that inherits from QWidget

我只是在阅读有关QWidgets的文章,我想创建作为插件的插件,这些插件将在运行时加载。 当我查看示例代码和要求时,该插件似乎继承自接口和QObject。 如何创建QWidget插件,它们都具有不同的按钮和不同的插槽? 同样,有可能创建一个从接口继承的插件和一个从QWidget(从QObject继承)继承的基类。

http://developer.qt.nokia.com/doc/qt-4.8/plugins-howto.html

但是,我了解了有关metaobject的信息,您只需知道它们的名称即可在运行时在其中加载小部件(不需要RTTI支持)。 但是我究竟该如何将类传递给对象以使其识别它们? 处理插件时,我需要将它们放在一个特殊的项目中,该项目使用.pro文件中的不同标志集进行编译。 但是我在这里怎么办?

我真的很想使用qtplugin,但是如何使用?

一个主意:

让该插件创建一个返回的QWidget是否可以接受并且是最佳选择? 如果我在没有接口的情况下创建界面,就看不到向设计人员编写插件的意义。 还是我误会了?

http://techbase.kde.org/Development/Tutorials/Writing_Qt_Designer_Plugins

class workspaceInterface {
   virtual QWidget* createWorkspace(QWidget* parent);
   ... other useful functions...
}

class mySpecialWidget : public QWidget {
    mySpecialWidget {
        add a layout, add some buttons, maybe change the color
    }
}

//plugin
#include "myspecialwidget.h"

class myPlugin : public QObject, public workspaceInterface {
    QWidget* createWorkspace(QWidget* parent) {
        return new MySpecialWidget();
    }
    .... 
}

我将所有这些代码放入一个项目中,将其编译为插件,然后在主应用程序中查找并加载。将创建它的一个实例,并让它创建一个将显示的小部件。

有没有更好的方法可以做到这一点?

您可能正在寻找为Qt Designer创建自定义窗口小部件 Widget插件确实继承自QWidget 例如,请参阅世界时间时钟插件

尽管窗口小部件插件主要用于Qt Designer,但它们的某些功能可以在运行时借助QUiLoader来使用。

编辑:

编写Qt Designer插件绝对是一笔投资。 如果您不需要设计时间支持,则在创建它们时可能会失去价值。

对于您自己的插件基础结构,您可以将插件打包在带有标准API(导出函数)的一组动态库中,以调用它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM