QT5,如何使用来自DLL的QML



我想从某个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),它构建了一个称为模块的DLL.dll

我尝试按如下方式使用它:

在我的项目中创建一个目录"imports",然后放置

   ./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
    ...
}

错误,模块"东西"未安装。

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

谁能帮我。谢谢。

好的,据我了解,您想将*.qml文件放入外部库中。我可以提供两种方法:

  1. 按照此链接创建 QML 插件。该插件可以包含资源*.qrc文件,您可以在其中放置*.qml文件

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

$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 {}

相关内容

  • 没有找到相关文章

最新更新