2016-11-05 14 views
1

アイテムのリストを含むXML応答があります。各項目には、サブ項目の別のリストが含まれています。私はそれをQMLのモデルに正常に変換できますが、リストのリストを表示することに問題があります。リストビューの列内のリストビューの列、またはQMLのリストのリストの処理

それぞれのタイトルがあるとしてアイテムのリストをレンダリングしたいと思います。対応するに水平に追加されたサブ項目のリストはColumnとなります。これはListViewを使用して、これらのコンポーネントのそれぞれのQMLドキュメントから簡単にする必要がありますように思えるが、私は2つの問題に実行しているよ:

  • Columnはの「タイトル」Column上にオーバーレイされたサブ項目
  • のみ最初のサブ項目が表示されているが、残りは(qmlsceneで実行することができます)比較的最小限のQMLを再現しています。ここ

を無視されます。

import QtQuick 2.5 

ListView { 
    width: 640 
    height: 480 

    model: ListModel { 
     ListElement { title: "title 1" } 
     ListElement { title: "title 2" } 
    } 

    delegate: Row { 
     width: parent.width 
     Text { 
      text: title 
      elide: Text.ElideRight 
     } 
     ListView { 
      orientation: ListView.Horizontal 
      model: ListModel { 
       ListElement { name: "name 1"; description: "desc 1" } 
       ListElement { name: "name 2"; description: "desc 2" } 
      } 
      delegate: Column { 
       Text { text: "name: " + name + "; desc: " + description } 
      } 
     } 
    } 
} 

予想される出力は次のようになります。

title 1 name: name 1; desc: desc1 name: name 2; desc: desc 2 
title 2 name: name 1; desc: desc1 name: name 2; desc: desc 2 

は私が間違った場所にListViewを使用していますか?または、希望の結果を得るために使用しなければならない他のコンポーネントがありますか?

答えて

1

おそらくネストされた垂直リストビューを使用するつもりはありませんでしたか?それは、使い勝手の点では最適ではないでしょう。

import QtQuick 2.5 

ListView { 
    width: 640 
    height: 480 

    model: ListModel { 
     ListElement { title: "title 1" } 
     ListElement { title: "title 2" } 
    } 

    delegate: Row { 
     width: parent.width 
     Text { 
      text: title 
      width: 100 
      elide: Text.ElideRight 
     } 
     Column { 
      Repeater { 
       model: ListModel { 
        ListElement { name: "name 1"; description: "desc 1" } 
        ListElement { name: "name 2"; description: "desc 2" } 
       } 
       delegate: Column { 
        Text { text: "name: " + name + "; desc: " + description } 
       } 
      } 
     } 
    } 
} 
+0

これは視覚的に(外部の 'Column'を削除した後 - サブアイテムを横に追加したいので)しかし、AFAICTの違いは、ListViewの場合、内容が大きすぎるとFlickableを実装しているのでスクロールできますが、Repeaterでは画面外に消えるだけです。そして、はい、私はこのポストからの入れ子の 'ListView'sを使用する考えを持っています - http://www.mail-archive.com/[email protected]/msg00808.html。これはバグですか? 'ListView'(または' GridView')でも使えるのでしょうか? –

+0

ネストされたListViewを水平にすることを意味しましたか?少なくとも、サイズを指定する必要があります。隣の列の中の孤独なText要素の場合と同じこと。デフォルトでは、テキストに合わせるために必要なもの(暗黙のサイズ)に拡張されます。 – jpnurmi

+0

明白なサイズと向きを追加しても、残念ながら動作は変更されません。リストはまだ '行'の一番左の位置から始まり、「タイトル」列の上に重ねられていますが、最初の項目だけが表示されます。 –

関連する問題