Как импортировать плагины Qml lib в другой проект? - PullRequest
0 голосов
/ 04 января 2019

У меня есть 2 qml-файла в библиотеке, и я хочу экспортировать их в другой проект, и мне не удалось импортировать их в мой проект QuickQmlTest.Я хочу использовать эти файлы qml из библиотеки QmlPlugin в проекте QuickQmlTest.Есть ли дополнительный шаг, который мне нужно сделать?У меня есть структура папок

  QMLProject  
  |-- QmlPlugin -(it is lib)
      |--QML  
         |--CustomButton.qml
         |-- CustomPolygon.qml
  |-- QuickQmlTest - (app)   

Мой QmPlugins.pro выглядит следующим образом

TEMPLATE = lib
TARGET = QmlPlugin
QT += qml quick
CONFIG += plugin c++11

TARGET = $$qtLibraryTarget($$TARGET)


HEADERS += \
    MyPlugin.h

DISTFILES = qmldir \  
    CustomButton.qml \
    CustomPolygon.qml
DESTDIR = $$PWD/lib

И я связал сгенерированные библиотеки DLL с QuickQmlTest.pro, используя

LIBS += -L$$PWD/../QmlPlugin/lib -lQmlPlugin  
INCLUDEPATH += $$PWD/../QmlPlugin

MyPlugin.h

    #include <QQmlExtensionPlugin>
    #include <QtQml/qqml.h>
    class MyItemModel: public QObject
    {
       Q_OBJECT
       Q_PROPERTY(qreal roundingRadius READ roundingRadius WRITE setRoundingRadius)
        public:
        void setRoundingRadius(const qreal rounding)
        {
            roundingRadius_ = rounding;
        }
         qreal roundingRadius() const
         {
             return roundingRadius_;
         }
         private:
         qreal roundingRadius_{8.0};
    };
    class MyPlugin : public QQmlExtensionPlugin
    {
        Q_OBJECT
        Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
        public:
        void registerTypes(const char* uri)override
        {
            Q_ASSERT(uri == QLatin1String("Components"));
            qmlRegisterType<MyItemModel>(uri, 1, 0, "MyItemModel");
        }
    };

в qmldir У меня есть

module Components
Components 1.0 CustomButton.qml CustomPolygon.qml
plugin QmlPlugin

В QuickQmlTest (приложение)
Я хочу использовать CustomButton.qml и CustomPolygon.qml в моем основном.qml
Итак, мой main.qml в приложении QuickQmlTest

import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 1.4
import Components 1.0 //To import the dll from lib 
Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
    CustomPolygon
    {
     width:60
     height:30  
    }
    CustomButton
    {
     width:60
     height:30  
    }
}  

А также я хочу видеть мои пользовательские типы qml (CustomButton и CustomPolygon) в режиме быстрого проектирования, которых я не могу достичь.

...