問題タブ [qquickitem]
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++ - C++ 側で QQuickItem の有効なインスタンスを取得する方法
大丈夫。私はたくさん検索しましたが、まだ良い解決策がありません。私は初めてQt
です。QQuickItem
私はそのようなクラスを持っています、
このように横に登録するのqmlRegisterType
を自分でやるのですが、main.cpp
qml
qmlRegisterType< MyQuickItemClass >("MyQuickItemClass", 1, 0, "MyQuickItemClass");
ここまでは大丈夫。しかし->オブジェクトインスタンスといくつかのプロパティを MyQuickItemClass に設定し、その中にいくつかのC++ロジックも設定してから、MyQuickItemClass
オブジェクトをに渡しますqml
。または、MyQuickItemClass
Qml から有効なインスタンスを取得します。C++ 側から vlid インスタンス オブジェクト インスタンスを取得するにはどうすればよいですか?MyQuickItemClass
QML
main.cpp
ここのリンクから次の学習を行ってみました。しかし、この手法では の 2 つの別個のオブジェクトが作成されますMyQuickItemClass
。からQML
1 つ、c++
側面から 1 つ。したがって、私にはうまくいきません。
以下は、多くの検索の後にこれを実行しようとしている方法です。
しかし、上記を実行すると、コンストラクターがMyQuickItemClass
2 回呼び出されます。cpp
オブジェクトを作成したときに横から 1 回、横から 1回qml
。のコンストラクターにもブレークポイントを配置して、これを確認しましたMyQuickItemClass
。その結果、プログラムの実行時にsomeCppClassObject
設定したものは内部で null になります。MyQuickItemClass
qml がインスタンス化するための最後の呼び出しを行ったため、で作成したオブジェクトはMyQuickItemClass
無視されます。MyQuickItemClass
main.cpp
これが私のqml
コードですMyQuickItemClass
:
これは、オブジェクトを に設定する必要がある C++ クラスですMyQuickItemClass
。
MyQuickItemClass
から派生したままにしておく必要があることに注意してくださいQQuickItem
。提案してください...
c++ - C++ 側で QQuickItem の C++ オブジェクト インスタンスを取得する方法
私はQtApp
& 純粋な C++ ライブラリを持っています。C++ ライブラリは、 と呼ばれる 1 つの単純なクラスを公開しMyCppLibApiClass
ます。にQtApp
は、 に埋め込まれたクラスがありmain.qml
ます。以下はクラスです:
のqml
コードに従ってquick item
ください:
以下は、アイテムmain.cpp
をロードしたことを示しています。qml
MyQuickItem
MyCppLibApiClass
インスタンスへのアクセスが必要です。で有効なインスタンスを取得するにはどうすればよいMyQuickItem
ですmain.cpp
か? MyCppLibApiClass
のメンバーとしてのオブジェクトを設定する必要がありますMyQuickItem
。セッターメソッドを使用してこれを行うことができます。しかし、まず、有効なインスタンスを に取得する必要がありますMyQuickItem
。では、にアクセスするにはどうすればよいMyQuickItem
でしょmain.cpp
うか。
編集:
この質問をする前にかなり検索しました。このリンクを読みました。また、私が投稿したこの質問では、正確な回答が得られませんでした。したがって、私の質問をより明確に言い換えて、答えを得ようとします。これへの提案に感謝します..
c++ - 定義済みの状態でカスタム Quick QML アイテムを作成する方法
私は Qt にまったく慣れていないので、おそらくかなり明白な質問をしていると思います。
C++ で作成したいすべてのカスタム QML GUI 要素のスーパー タイプを作成したいと考えています。このスーパー タイプは、定義済みの状態を QML アイテムに追加することになっています。これに似たもの:
このチュートリアル ( http://doc.qt.io/qt-5/qtqml-tutorials-extending-qml-example.html )から簡単なカスタム アイテムを作成する方法を知っています。から継承するC++クラスの列挙型を使用して状態を定義できると思いQQuickItem
ます。ただし、このチュートリアルでは、状態リストのようなより複雑な Qt Quick 要素を作成する方法は示していません。
そこで、気になる疑問点は以下の通りです。
- QML State タイプを事前に定義して、それらを複数の要素で使用することさえ可能ですか?
- などの C++ クラスにステート リストなどの複雑な QML タイプを追加するにはどうすればよい
StatedGuiElement
ですか?
c++ - QQuickItem の focusInEvent と focusOutEvent の目的
その基本的なQt5の質問、それらがどのように動作するかについての説明は良いでしょう。
QQuickItem の場合、focusInEvent/focusOutEvent と混同されます。QQuickItem には、ItemChanged イベントでアイテムに通知される activefocus の概念があるため、QQuickItem の activeFocus が true の場合にのみ focusInEvent/focusOutEvent がトリガーされます。それ以外の場合、アイテムはそれらのイベントを受け取りません。
また、focusOutEvent が発生したときにいくつかのシナリオに直面しましたが、Item の activeFocus は変更されません。
focusInEvent/focusOutEvent はアイテムのアクティブなフォーカスにどのように関連していますか?また、QuickItem のフォーカス/フォーカス解除をチェックするためのベースとなる方法は何ですか?
qt-quick - QQuickView と QQuickItem の違いは何ですか?
QQuick クラスを使用して C++ でインターフェイスを記述するために、QQuickView の代わりに QQuickItem を継承することを想定しています。Qtドキュメントで提供されている説明から、QQuickViewがqmlをロードすることを理解しました。 QQuickView は、表示可能な QML オブジェクトをアプリケーションのユーザー インターフェイスに統合するために使用されます。 QQuickItem は QWidget のようなものです (ここで間違っているかもしれません)。 QQuickItem クラスは、Qt Quick のすべてのビジュアル アイテムの中で最も基本的なものを提供します。 誰かがそれについて詳しく説明できますか?
前もって感謝します
c++ - 保存されたテクスチャを QuickItem に直接マップして表示する方法は?
私のQt app
withC++
では、QQuickItem
派生クラスを使用して、各フレーム レンダーでいくつかのフィルターを実行することにより、すべてのフレーム レンダーで生成されるテクスチャを表示しています。これはうまくいきます。
次に、 がtakeTexture
提供するメソッドを使用して、QOpenGLFramebufferObject
テクスチャを保存し、必要に応じてそれらを表示しました。これらの保存されたテクスチャはタイプGLuint
s です。通常の OpenGL レンダリング パイプラインを使用して表示することができます。それはうまくいきます。
しかし、レンダリング パイプラインの呼び出しを回避し、この保存されたテクスチャを GPU メモリに直接マップQQuickItem
する方法はありますか?