2016-12-21 10 views
0

私は以下の問題があります。 の幅が200または800のComponentのリストがあります。このリストをフィルタリングしたいだけです小さい画面で作業するときに幅が200のRectangleのオブジェクトを作成します。インスタンス化の前にコンポーネントプロパティへのアクセス

私はすべてのオブジェクトを作成し、幅を確認し、間違った幅のオブジェクトを再度破棄したくないことをお勧めします。明らかな理由から、私は実際にはのみを作成し、幅が200のものを作成したいとします。

これを行うには、インスタンス化する前に幅の知識が必要です。 私が見た限りでは、は、のイントロスペクション前にに公開され、文書化された方法はありません。

私の質問は私のComponentの中にパッケージ化されているものに関する知識を得るための非公開な方法はありますか? C++でも可能でしょうか?

少なくとも、どのような種類のオブジェクトがカプセル化されているかを知ることは可能でしょうか?それがCustomComponent1かどうか、ButtonRedRectangle ...

答えて

2

残念ながらそうではありません。コンポーネントがネットワークからフェッチされていれば、まだダウンロードされていないqmlファイルを指すことさえできるので、それを予測することすらできません。

物事のカップルは、あなたが別の角度から問題にアプローチする余地がある場合は、しかし試すことができますがあります。

それが作成されますようごそれにコンポーネントの外部からプロパティを渡すされて何ができますか。コンポーネント内のコードを制御すると仮定すると、外部から設定されたプロパティの値に基づいて内部要素の作成方法を調整できます。

あなたのコンポーネントが複数の要素を提供していて、条件を満たすもの(多分複数の組み合わせ)を作成したい場合は、最初のコンポーネント内に2番目のコンポーネントレイヤーを導入し、その2番目のComponentに条件に一致する場合は実際の要素を作成し、そうでない場合は空のItem {}を作成します。

私はそれが助けてくれることを願っています!

+0

ありがとうございます。あなたはURLをよく知っています。しかし、一度ダウンロードすればデータを取得できます*。 'GammaRay'は' Components'をイントロスペクトするposibillityを持っていませんか? (私はこれまでに 'GammaRay'を試していませんでした!) ' GammaRay'が表示できるなら、情報をQMLに戻すことができるはずです – derM

関連する問題