2016-11-02 4 views
2

ラッピングなどの場合。コンポーネント内のListViewやその他のものは、通常これを行います。(中間) "モデル"プロパティタイプとしてQtObjectまたはvarを使用する必要がありますか?

Item 
{ 
    property QtObject list_model: cpp_list_model 

    CustomListView { model: list_model } 
} 

list_modelがコンテキストプロパティである場合にのみ外側の項目を使用し、他のQMLの内部でインスタンス化されている場合は、CustomListViewを直接使用してください。

ListModelのようなものはQtObjectそのものではないので、QtObjectの代わりにvarをむしろ使うべきだと私の同僚は言います。この場合、QtObjectを使用し続ける必要がありますか?その場合はQVariantが含まれていませんか?

+0

代わりに 'alias'を使うことができるので、あなたは' CustomListView'と同じ型を持っていることを確認できます。 'プロパティエイリアスlist_model:myCustomListView.model'。 – derM

+0

@derM申し訳ありませんが、私の例は不明でした。私は、C++のセット・コンテキスト・プロパティー 'cpp_list_model'をインクルードするように修正しました。ここでエイリアスは私が知る限りでは動作しません。 – rubenvb

+0

'ListModel'はC++側のQObject派生クラスですが、モデルがプレーン番号、文字列リストなどでも構わない場合は、' var'が必要です。 –

答えて

1

modelプロパティをC++から設定したくない場合は、C++コンテキストで別のコンポーネントファイルを作成するだけではどうですか。 (あなたがとにかくC++からQMLのコンポーネントをインスタンス化する場合、私はここにC++からそれをやって好むだろう。)の代わりにラッピングの

ItemにこのコンテンツをQMLファイルを作成します。

CustomListView { 
    model: cpp_list_model 
} 

これより簡単な方法であなたダミーのItemラッパーを使用しないと、ListViewのジオメトリとプロパティに簡単にアクセスできなくなります。

関連する問題