У меня есть 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) в режиме быстрого проектирования, которых я не могу достичь.