2013-08-30 38 views
1

我有一個QStringList屬性,我基本上希望將它變成一組單選按鈕,以便當QStringList屬性更改按鈕的數量並自動更新其標籤時。QML動態部件列表

我可以排序做有一個ListView,但它有問題:

  1. 讓你擁有所有的移動反彈力這不是一個真正的桌面widget。
  2. 我無法獲得ListView選擇和單選按鈕檢查以良好地交互。

無論如何,這是我的嘗試。我非常喜歡做沒有一個ListView,但:

 ListView { 
      id: myList 
      orientation: ListView.Horizontal 

      ExclusiveGroup { 
       id: myListExclusiveGroup 
      } 

      Component { 
       id: myDelegate 
       RadioButton { 
        text: modelData 
        onCheckedChanged: { 
         if (checked) 
          myList.currentIndex = index 
        } 
        exclusiveGroup: myListExclusiveGroup 
       } 
      } 

      model: myListOfStrings 
      delegate: myDelegate 
      focus: true 
     } 
+1

您是否嘗試過使用基於ListModel的'Repeater',在您的按鈕列表更改時更新? – koopajah

+0

啊哈,'Repeater'正是我想要的! – Timmmm

+0

很高興我可以幫忙,我正在做一個例子,但你打敗了我! – koopajah

回答

2

感謝koopajah,我改變了它使用Repeater和現在的工作。需要注意的是,似乎Repeater增加了一切的年底其父的孩子,這意味着你可以不依賴於它在佈局中的位置 - 你必須把它在另一個佈局,例如像這樣:

 ExclusiveGroup { 
      id: myListExclusiveGroup 
     } 
     RowLayout { 
      Repeater { 
       id: myList 

       RadioButton { 
        text: modelData 
        exclusiveGroup: myListExclusiveGroup 
       } 

       model: myListOfStrings 
       focus: true 
      } 
     }