我想从某个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
文件放入外部库中。我可以提供两种方法:
-
按照此链接创建 QML 插件。该插件可以包含资源
*.qrc
文件,您可以在其中放置*.qml
文件 -
创建外部二进制资源。只需创建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 {}
。