問題タブ [qqmlengine]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Qt C++ 単体テストで QQuickWidget の代わりに QQuickWindow を動的にロードする
私たちのプロジェクトには、QML ソースの C++ 単体テストがあります。次のコードを使用して、コンポーネントを動的にロードしてさらに処理します
次のようなqmlコンポーネントではうまくいきました:
my.qml:
ただし、コンポーネントをラップするとDialog
それは動作を停止しました:
エラー:
QQuickWidget
から派生したルート オブジェクトのロードのみをサポートしますQQuickItem
。
であると予想されDialog
ますQQuickWindow
。ただし、この https://doc.qt.io/qt-5/qquickview.html#details のようQQuickItem
にロードしようとしています:QQuickView
上記のエラーでも失敗します。QQmlApplicationEngine
そして、ここのようにロードしますhttps://stackoverflow.com/a/23936741/630169 :
別のエラーで失敗します:
QQmlApplicationEngine
コンポーネントの読み込みに失敗しました
QWARN:MyTest::myMethodTest()
モジュール "mynamespace.mymodule
" はインストールされていません
QWARN:MyTest::myMethodTest()
モジュール "mynamespace.mymodule
" はインストールされていません
...
view->setSource()
このモジュールをRectangle
itemに対して正しくロードQQmlApplicationEngine
し、同じ item qml ソースに対して失敗するのはなぜDialog
ですか?
注:これらのモジュールは C++ であり、
view->setSource()
.
QQmlComponent
ドキュメントに記載されているように使用してロードしようとすると: https://doc.qt.io/qt-5/qqmlcomponent.html#details :
- その後、別のエラーが発生します:
QQmlComponent
: コンポーネントの準備ができていません
呼び出されない場合engine->addImportPath()
、クラッシュします
場所: [不明なファイル(0)]
呼び出し時のエラーengine->addImportPath()
。
正しくロードDialog
( ) し、テストのために C++QQuickWindow
でルートを取得する方法は? QQuickItem
何か案は?ありがとう!
qt - Qt - QQuickView()、GUI をフリーズせずに setSource
QT バージョン 5.15.0. MinGW 8.1.0、64 ビット
この問題は、QML ファイルにマップ プラグインをロードする場合にのみ発生するようです。以下はコードの抜粋です。少なくとも 2 秒間待機すると、GUI がフリーズします。基本的に、GUI スレッドは 2 秒間ブロックされます。別のスレッドで qmlView->setSource(QUrl("qrc:/maps/map.qml")) を呼び出そうとしましたが、クラッシュしました。同じ GUI スレッドであるため、ローダー QML タイプが機能するかどうかはわかりません。
プロバイダーを変更すると、メイン GUI もフリーズします。
GUI がフリーズしない QML ファイルをロードする方法はありますか? ありがとう
QMLファイルは
JarMan からの入力の後、QML ローダーを使用しようとしましたが、以下を参照してください。ただし、GUI はまだフリーズしています。