QT5,我如何使用DLL中的QML?

时间:2016-02-12 15:43:54

标签: dll qml qt5

我想从一些QML构建一个DLL,以便可以部署它

modules.pro:

TARGET = modules
INCLUDEPATH += .
QT += core qml quick 
TEMPLATE = lib
RESOURCES += MyStuff.qrc

MyStuff.qrc:

<RCC>
    <qresource prefix="/">
        <file>Stuff/qmldir</file>
        <file>Stuff/random.qml</file>
    </qresource>
</RCC>

在Windows下,我做,qmake,然后是nmake(VS2013),它构建了一个名为modules.dll的DLL

我尝试使用如下:

创建目录&#34;导入&#34;在我的项目中,并放置

   ./imports/Stuff/modules.dll

然后main.cpp

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
    QQmlApplicationEngine engine;
    engine.addImportPath("imports");
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    return app.exec();
}

main.qml

import QtQuick 2.5
import QtQuick.Controls 1.4
import Stuff 1.0

ApplicationWindow {
    id: demo
    ...
}

错误,模块&#34;东西&#34;没有安装。

我不知道我在做什么,只是在黑暗中糊涂。

任何人都可以帮助我。感谢。

1 个答案:

答案 0 :(得分:2)

好的,据我所知你想把你的*.qml文件放到外部库中。 我可以提供2种方法:

  1. this link之后创建QML插件。该插件可以包含资源*.qrc文件,您可以在其中放置*.qml个文件

  2. 创建外部二元资源。只需创建empy * .qrc文件并放入所需的所有资源,包括*.qml个文件。然后编译它:

  3. $QTPATH/bin/rcc -binary/path/to/your.qrc /path/to/binary.rcc
    

    现在您可以在应用程序的main.cpp中包含已编译的资源文件:

    QResource::registerResource("/path/to/binary.rcc");
    

    之后,您可以使用外部资源文件中定义的所有qml项目。例如,如果您在binary.rcc中有MyItem.qml文件,则可以在本地qml文件中将其用作MyItem {}