問題タブ [qqmlapplicationengine]
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/QML: アプリを再起動せずに別の QML ファイルに「切り替える」または「開く」にはどうすればよいですか?
サーバーから QML ファイルをロードし、ある種の「本棚」をユーザーに表示する小さなアプリケーションがあります。
ユーザーが表示された書籍の 1 つを選択すると、C++ がバックグラウンドで ZIP ファイルをダウンロードし、解凍します。その結果、ファイル システム上の各ブックのフォルダーが作成され、基本的にブックの自己完結型バージョンである "main.qml" ファイルがあり、ユーザーは閲覧/ズーム/などを行うことができます。
本棚を QML ファイルに表示するために使用していますが、本に「切り替え」て ApplicationWindow に表示するための最良のApplicationWindow
方法は何だろうと思っています。本棚がメモリからほとんど「アンロード」されて、本を表示するためのリソースが解放されるとよいでしょう。
どうすればいいですか?
かなり「正しい」とは思わない私の大まかなアイデアは次のとおりです。
QQmlApplicationEngine::load()
別の URL を読み込むために使用しますか?- 本の QML コンポーネントを最上位の子オブジェクトとしてシェルフに追加します。しかし、これは多くの無駄なリソースをもたらします。
- ...?
どんな提案でも大歓迎です!
c++ - エラー: QQmlApplicationEngine はコンポーネントの読み込みに失敗しました
タイプを登録しようとしましたが、次のエラーが発生しました。
これは私が使用しているコードです:
qml - QML で ImageView を更新する
実行時にopencvを使用して画像を処理しており、imageViewを使用してQMLでこの画像の更新されたバージョンを表示したい.現在、実行時に新しい画像ファイルを作成し、そのパスをQMLのimageViewに再割り当てしています.これ?
qt - エラーが発生しました:「QQmlApplicationEngine はコンポーネントの読み込みに失敗しました」および「qrc:/main.qml:-1 ファイルが見つかりません」
Qt Widgets アプリケーションを作成し、「main.qml」という名前の qml を追加しました。私のファイルは、 qml.qrc のdialog.cpp、dialog.h、dialog.ui、main.cpp、untitled9.pro、main.qmlです。
main.cpp :
untitled9.proに書きQT += qml quick widgets
ました。
他のコードは変更していませんが、どうしてこうなったのですか? これはスタックオーバーフローでの最初の質問です。質問を明確にしようとしています。
c++ - QQuickImageProvider requestImage() をオーバーライドする
私は QQuickImageProvider を使用しており、requestimage 関数でクラス オブジェクト (PageBuffer) を使用しています。
PageBuffer オブジェクトに保存された変数を使用して ImageProvider の QImage を設定し、id をインデックスとして使用したい
イメージプロバイダーを呼び出したいQMLファイルは次のとおりです。
qt - QQmlApplicationEngine の適切なリロード
main.qml
次のようにファイル システムからファイルをロードする QML ベースのアプリがあります。
これで問題なく動作しますが、main.qml が新しいバージョンに置き換えられた場合に備えて、エンジンを「リロード」したいと思います。
load()
これまで試したのは、エンジンが他の Qt クラスのように自動的にリセットされると仮定して、もう一度呼び出すことでした。
残念ながら、そうではありません。メソッドを再度呼び出すと、更新された qml ファイルの内容を含む別のウィンドウが表示されますが、元のウィンドウは開いたままになり、古い qml ファイルが表示され続けます。
これを修正するために、 を呼び出しload(QUrl())
、続いclearComponentCache()
て新しいファイルの最終ロード呼び出しを試みました。これにより、同じ効果が得られます。
アプリケーションの実行中にQMLエンジンを「適切に」リロードする方法はありますか?
qt - C++ でシーンに追加された新しい qml オブジェクト
新しい QML オブジェクトを既存のシーンに追加する際に問題があります。
私のmain.qml
情報源:
MyItem.qml
ソース:
最後に、ここに私のmain.cpp
ソースがあります:
main.qml
は正しく表示されますが、MyItem.qml
内部には表示されませんmain.qml
。Component.status()
は状態Ready
を返します。エラーはありませんdynamicObject
。私は何を間違っていますか?
qt - QML UnitTest に C++ コンテキスト プロパティがありません
同じ問題に直面しているこの古い投稿を見つけました: QML コンポーネントをモックする方法
残念ながら、解決策はありません。問題を要約すると、モジュールをインポートするQMLがあります。TestCase
ただし、このモジュールは、通常は .xml ファイルに追加されるルート コンテキスト プロパティに依存していmain.cpp
ます。これは であるため、 の起動TestCase
方法には影響しません。QQmlApplicationEngine
不足しているコンテキスト プロパティを追加するにはどうすればよいですか?
c++ - ApplicationWindow からページを切り替えるには、QQuickView または QQmlApplicationEngine を使用します。
をメインファイルとして使用し、で他のファイルApplicationWindow
に切り替えられるようにしたいです。基本的にはこれを行います:QML
C++
QQuickView::setSource(const QUrl & url)
起動 => main.qmlをロード( ApplicationWindow
) => ヘルプ ボタンをクリック => help.qmlファイルをロード =>C++
など
main.qml
(Loader
ここが本当にここに必要かどうか疑問に思っています)
ただしQQuickView
、 から派生したルート オブジェクトのロードのみをサポートしますQQuickItem
。したがって、 では動作しませんApplicationWindow
。
QQmlApplicationEngine
の代わりに使おうと思っているのですQQuickView
が、使い方が違うようで、このクラスしか装備されていませんQQmlApplicationEngine::load(const QUrl & url)
私の目的にとって最善の行動方針は何ですか?main.qmlファイルApplicationWindow
にが本当に必要ですか?
qt - C++ バックエンドで QML コンポーネントにアクセスするには
を含むqmlファイルがありますRectangle
。onClicked( )
C++ バックエンドからトリガーしたいと思います。では、C++/Qt バックエンドで QML コンポーネント参照にアクセスするにはどうすればよいですか?