gpt4 book ai didi

dll - QT5,如何从 DLL 使用 QML?

转载 作者:行者123 更新时间:2023-12-02 07:41:24 24 4
gpt4 key购买 nike

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

模块.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

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

在我的项目中创建一个目录“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
...
}

错误,模块“Stuff”未安装。

我不知道自己在做什么,只是在黑暗中摸索。

谁能帮帮我。谢谢。

最佳答案

好的,据我了解,您希望将 *.qml 文件放入外部库中。我可以提供两种方法来做到这一点:

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

  2. 创建外部二进制资源。只需创建空 *.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 {}

关于dll - QT5,如何从 DLL 使用 QML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35366615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com