qmlファイルを4つ、main.cppを1つ含んでいます。 これら4つのqmlファイルに対して1つのdllファイルを作成することは可能ですか? それを行う方法が異なる場合は、別のアプリケーションで使用してください。QT/QMLで共有ライブラリを作成する方法
答えて
はQML-モジュールのみのオプション、C++のみと混合モードがありますQML Modules
のドキュメントを見てください。
すでに述べたように、qmlファイルをライブラリに埋め込む必要はありません。しかしもちろん、あなたはあなたが望むすべてをやる権利があります。
はQMLファイルを含むリソースファイルを用意し、それをコンパイルし
1.バイナリリソースファイルを作成します:今、あなたはあなたにこのファイルを含めることができ
rcc -binary plugin.qrc -o plugin.rcc
私はそれを行うには、少なくとも2つの方法を知っていますアプリケーション:
QResource::registerResource("plugin.rcc");
と通常のQRCファイルとしてそれを使用する:
QResource::registerResource(qApp->applicationDirPath() + "/plugin.rcc");
QQuickView *view = new QQuickView();
view->setSource(QUrl("qrc:/qml/myfile.qml"));
qml/
は、リソースファイル内の接頭辞です。
2.共有ライブラリ
もう1つの方法は、同じリソースファイルを含む共有ライブラリを作成することです。インタフェース以下プラグインの共有ライブラリの実装例:
interface.hが
#ifndef PLUGIN_INTERFACE_H
#define PLUGIN_INTERFACE_H
#include <QString>
#include <QObject>
class PluginInterface
{
public:
virtual ~PluginInterface() {}
virtual QByteArray getQML(const QString &name) = 0;
};
#define PluginInterface_iid "org.qt-project.PluginInterface"
Q_DECLARE_INTERFACE(PluginInterface, PluginInterface_iid)
#endif
とその実装です:
QByteArray PluginImpl::getQML(const QString &name)
{
QFile file(":/qml/" + name);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return QByteArray();
return file.readAll();
}
今、あなたのアプリケーションでは、あなたのプラグインをロードし、そのリソースを文字列として取得する:
QDir pluginsDir(qApp->applicationDirPath());
QPluginLoader pluginLoader(pluginsDir.absoluteFilePath("plugin.dll"));
QObject *plugin = pluginLoader.instance();
if (plugin) {
PluginInterface *pluginInstance = qobject_cast<PluginInterface *>(plugin);
if (pluginInstance) {
QByteArray content = pluginInstance->getQML("file1.qml");
QQuickView *view = new QQuickView();
QQmlComponent component(view->engine());
component.setData(content, QUrl());
QQuickItem *childItem = qobject_cast<QQuickItem*>(component.create());
childItem->setParentItem(view->contentItem());
QWidget *container = QWidget::createWindowContainer(view);
container->setFocusPolicy(Qt::TabFocus);
ui->verticalLayout->addWidget(container);
}
}
アプリケーションをデプロイするときは、#QTPATH/qml/QtQml、#QTPATH/qml/QtQuick.2、#QTPATH/qml/QtQuick.2などのすべてのqmlシステムファイルをコピーする必要があります。
リンク:
デプロイメントツールをWindowsとMacOSの両方で正しく認識された依存関係にデプロイするときは、 'qmldir'パラメータが使用されます。もし私があなたなら私は世界に追加しました。素晴らしい答えです。 – BaCaRoZzo
- 1. 共有ライブラリ固有のシングルトンインスタンスを作成する方法
- 2. 共有ライブラリのリストと共有ポイント2013の両方で動作するカスタムリボンボタンを作成する方法
- 3. Oozie共有ライブラリの作成
- 4. 共有ライブラリを識別する方法
- 5. スタティックライブラリと共有C++ライブラリの両方を作成する
- 6. 静的ライブラリのリストから共有ライブラリを作成する
- 7. GNU libtoolで静的ライブラリと共有ライブラリの両方を作成しますか?
- 8. Eclipseで共通のライブラリを共有するAndroidアプリを作成する
- 9. automakeスクリプトで共有ライブラリ(.so)を作成するには?
- 10. Visual Studioで共有ライブラリを作成する
- 11. binutilsでリロケータブル共有ライブラリを作成する
- 12. Android Studioで共有* .soライブラリのリリース版を作成する
- 13. 共有ライブラリ(旧スタンダード)をC++ 11共有ライブラリでコンパイルする
- 14. メールで共有するバイト[]イメージを作成する方法
- 15. オプションでクラスレベルのスコープで共有リストを作成する方法
- 16. gfortranを使って共有ライブラリを作成できますか?
- 17. 静的にffmpegを含む共有ライブラリを作成する
- 18. WebpackのDllPluginで共有ライブラリを作成します。
- 19. Facebook SDKでカスタム共有ボタンを作成する方法
- 20. 共有レルム内でプライベートレルムオブジェクトを作成する方法
- 21. Androidプラットフォーム用の共有ライブラリを作成する際の問題
- 22. TFSと共有DLLで共通ライブラリを扱う方法
- 23. アンドロイドビルドシステムでネイティブ共有ライブラリをロードするJavaライブラリを処理する方法
- 24. ランタイムデバッグ共有ライブラリの方法は?
- 25. linuxの他のライブラリを使って共有ライブラリを作成する
- 26. Travis-CIでTensorFlowの共有ライブラリを構築する方法
- 27. weblogicで共有ライブラリを優先的にロードする方法
- 28. 共有ライブラリとCMakeを相対パスでリンクする方法
- 29. AARファイルの共有ライブラリでndk-stackを使用する方法
- 30. バージョンサフィックスなしでffmpeg共有ライブラリを構築する方法
なぜあなたはこれをしたいですか?唯一のqmlファイルの場合は、qmlファイルを他のアプリケーションにコピーしてください。完了しました。 – MrBlueSky