Qt5编写Qt Quick2插件

前言 最近在试着把自定义的QML控件封装成插件供其他程序调用,由于我使用的还是Qt5,在构建的过程中遇到不少问题,这里做一下简单汇总。 新建项目 新建库→Qt Quick2 Extension Plugin,Qt 5版本仅支持使用QMake作为构建套件。Qt 6才支持使用CMake作为QML扩展插件的构建套件。 编写插件 例如,我新建了一个叫做Test的插件库,项目会自动创建一个TestPlugin的类,这个类继承自QQmlExtensionPlugin,我们需要重写它的两个虚函数。 1 2 3 4 5 6 7 8 9 10 11 12 /* testplugin.h */ #include <QQmlExtensionPlugin> class TestPlugin : public QQmlExtensionPlugin { Q_OBJECT Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) public: void registerTypes(const char *uri) Q_DECL_OVERRIDE; void initializeEngine(QQmlEngine *engine, const char *uri) Q_DECL_OVERRIDE; }; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 /* testplugin.cpp */ #include "testplugin.h" #include "myitem.h" #include <qqml.h> void TestPlugin::registerTypes(const char *uri) { // @uri com.mycompany.qmlcomponents qmlRegisterType<MyItem>(uri, 1, 0, "MyItem"); } void TestPlugin::initializeEngine(QQmlEngine *engine, const char *uri) { QQmlExtensionPlugin::initializeEngine(engine, uri); } 其中,MyItem就是我们自定义的控件。简单看一下示例代码: ...

三月 13, 2025 · 4 分钟 · 711 字