如何创建一个继承自QWidget的qt插件
How to create a qt plugin that inherits from QWidget
我刚刚读到关于QWidget的文章,我想创建一些插件,这些插件是将在运行时加载的小部件。当我查看示例代码和需求时,插件似乎继承了接口和QObject。我该如何创建QWidget插件,因为它们都有不同的按钮和插槽?此外,是否可以创建一个从接口继承的插件和一个从QWidget继承的基类(从QObject继承)。
http://developer.qt.nokia.com/doc/qt-4.8/plugins-howto.html
然而,我读过关于元对象的文章,您可以在运行时加载小部件,只需知道它们的名称(不需要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(导出函数)来调用它们。
- 如何在QT Creator上将QWidget声明为继承类的对象
- qt QWidget::closeEvent link issue
- 如何将不在 QT 全局范围内的函数附加到 Qwidget 上
- 无法在 qt 中为 QWidget 中的派生类设置样式表
- QT覆盖QWidget错误
- "hijacking" 给定根 QWidget* 的 Qt gui
- 如何在qt中将字符串转换为qwidget
- Qt not receiving QWidget::dropEvent
- 尝试实例化 QWidget 时 QT 程序出现段错误
- QT:如何使Qwidget出现在我的MainWindow上的多个位置
- 如何在qWidget.showFullScreen()上自动缩放Qt中的按钮和所有内容
- 带有QWT运行时错误的QT:QWIDGET:必须在Qwidget之前构造Qapplication
- Qt 动态创建 QWidget from QString.
- 如何在Qt QWidget中更改标题栏按钮,例如关闭和最小化按钮
- 来自QT QWidget的X11小工具
- 更改Qt中父QWidget悬停状态的样式
- Qt QWidget::minimumSizeHint delay
- QT - C++错误:在此上下文中'QWidget::QWidget(const QWidget&)'是私有的
- 带有 QWidget 的分段错误构造函数.Qt/C++
- 从QWidget获取对象名称(如Qt Designer中所示)