問題タブ [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.

0 投票する
1 に答える
1087 参照

c++ - Qt/QML: アプリを再起動せずに別の QML ファイルに「切り替える」または「開く」にはどうすればよいですか?

サーバーから QML ファイルをロードし、ある種の「本棚」をユーザーに表示する小さなアプリケーションがあります。

ユーザーが表示された書籍の 1 つを選択すると、C++ がバックグラウンドで ZIP ファイルをダウンロードし、解凍します。その結果、ファイル システム上の各ブックのフォルダーが作成され、基本的にブックの自己完結型バージョンである "main.qml" ファイルがあり、ユーザーは閲覧/ズーム/などを行うことができます。

本棚を QML ファイルに表示するために使用していますが、本に「切り替え」て ApplicationWindow に表示するための最良のApplicationWindow方法は何だろうと思っています。本棚がメモリからほとんど「アンロード」されて、本を表示するためのリソースが解放されるとよいでしょう。

どうすればいいですか?

かなり「正しい」とは思わない私の大まかなアイデアは次のとおりです。

  • QQmlApplicationEngine::load()別の URL を読み込むために使用しますか?
  • 本の QML コンポーネントを最上位の子オブジェクトとしてシェルフに追加します。しかし、これは多くの無駄なリソースをもたらします。
  • ...?

どんな提案でも大歓迎です!

0 投票する
1 に答える
16849 参照

c++ - エラー: QQmlApplicationEngine はコンポーネントの読み込みに失敗しました

タイプを登録しようとしましたが、次のエラーが発生しました。

これは私が使用しているコードです:

0 投票する
1 に答える
389 参照

qml - QML で ImageView を更新する

実行時にopencvを使用して画像を処理しており、imageViewを使用してQMLでこの画像の更新されたバージョンを表示したい.現在、実行時に新しい画像ファイルを作成し、そのパスをQMLのimageViewに再割り当てしています.これ?

0 投票する
1 に答える
7570 参照

qt - エラーが発生しました:「QQmlApplicationEngine はコンポーネントの読み込みに失敗しました」および「qrc:/main.qml:-1 ファイルが見つかりません」

Qt Widgets アプリケーションを作成し、「main.qml」という名前の qml を追加しました。私のファイルは、 qml.qrc のdialog.cppdialog.hdialog.uimain.cppuntitled9.promain.qmlです

main.cpp :

untitled9.proに書きQT += qml quick widgetsました。 他のコードは変更していませんが、どうしてこうなったのですか? これはスタックオーバーフローでの最初の質問です。質問を明確にしようとしています。

0 投票する
1 に答える
3657 参照

c++ - QQuickImageProvider requestImage() をオーバーライドする

私は QQuickImageProvider を使用しており、requestimage 関数でクラス オブジェクト (PageBuffer) を使用しています。

PageBuffer オブジェクトに保存された変数を使用して ImageProvider の QImage を設定し、id をインデックスとして使用したい

イメージプロバイダーを呼び出したいQMLファイルは次のとおりです。

0 投票する
2 に答える
3617 参照

qt - QQmlApplicationEngine の適切なリロード

main.qml次のようにファイル システムからファイルをロードする QML ベースのアプリがあります。

これで問題なく動作しますが、main.qml が新しいバージョンに置き換えられた場合に備えて、エンジンを「リロード」したいと思います。

load()これまで試したのは、エンジンが他の Qt クラスのように自動的にリセットされると仮定して、もう一度呼び出すことでした。

残念ながら、そうではありません。メソッドを再度呼び出すと、更新された qml ファイルの内容を含む別のウィンドウが表示されますが、元のウィンドウは開いたままになり、古い qml ファイルが表示され続けます。

これを修正するために、 を呼び出しload(QUrl())、続いclearComponentCache()て新しいファイルの最終ロード呼び出しを試みました。これにより、同じ効果が得られます。

アプリケーションの実行中にQMLエンジンを「適切に」リロードする方法はありますか?

0 投票する
2 に答える
541 参照

qt - C++ でシーンに追加された新しい qml オブジェクト

新しい QML オブジェクトを既存のシーンに追加する際に問題があります。

私のmain.qml情報源:

MyItem.qmlソース:

最後に、ここに私のmain.cppソースがあります:

main.qmlは正しく表示されますが、MyItem.qml内部には表示されませんmain.qmlComponent.status()は状態Readyを返します。エラーはありませんdynamicObject。私は何を間違っていますか?

0 投票する
2 に答える
454 参照

qt - QML UnitTest に C++ コンテキスト プロパティがありません

同じ問題に直面しているこの古い投稿を見つけました: QML コンポーネントをモックする方法

残念ながら、解決策はありません。問題を要約すると、モジュールをインポートするQMLがあります。TestCaseただし、このモジュールは、通常は .xml ファイルに追加されるルート コンテキスト プロパティに依存していmain.cppます。これは であるため、 の起動TestCase方法には影響しません。QQmlApplicationEngine

不足しているコンテキスト プロパティを追加するにはどうすればよいですか?

0 投票する
1 に答える
1789 参照

c++ - ApplicationWindow からページを切り替えるには、QQuickView または QQmlApplicationEngine を使用します。

をメインファイルとして使用し、で他のファイルApplicationWindowに切り替えられるようにしたいです。基本的にはこれを行います:QMLC++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にが本当に必要ですか?

0 投票する
1 に答える
652 参照

qt - C++ バックエンドで QML コンポーネントにアクセスするには

を含むqmlファイルがありますRectangleonClicked( )C++ バックエンドからトリガーしたいと思います。では、C++/Qt バックエンドで QML コンポーネント参照にアクセスするにはどうすればよいですか?