gpt4 book ai didi

c++ - 如何创建一个继承自QWidget的qt插件

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:00:14 26 4
gpt4 key购买 nike

我刚刚阅读了有关 QWidgets 的文章,我想创建插件,这些插件是将在运行时加载的小部件。当我查看示例代码和需求时,插件似乎继承自接口(interface)和 QObject。我将如何创建 QWidget 插件,它们都有不同的按钮和不同的插槽?另外,是否可以创建一个继承自接口(interface)的插件和一个继承自 QWidget(继承自 QObject)的基类。

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

但是,我读到有关元对象的信息,您可以在其中在运行时加载小部件,只需知道它们的名称(不需要 RTTI 支持)。但是我究竟如何将类(class)交付给项目以使其识别它们呢?在处理插件时,我需要将它们放在一个特殊的项目中,我在 .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();
}
....
}

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

有没有更好的方法,或者就是这样?

最佳答案

您可能正在寻找 Creating Custom Widgets for Qt Designer . Widget 插件继承自QWidget。例如,参见 World Time Clock Plugin .

虽然小部件插件主要用于 Qt Designer,但在 QUiLoader 的帮助下,它们的一些功能可以在运行时使用。 .

编辑:

写Qt Designer插件肯定是有些投入的。如果您不需要设计时支持,您可能会发现创建它们的值(value)很小。

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

关于c++ - 如何创建一个继承自QWidget的qt插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9221342/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com