2013-08-30 3 views
1

У меня есть свойство QStringList, и я в принципе хочу динамически преобразовывать его в группу переключателей, так что при изменении свойства QStringList количество кнопок и их меток автоматически обновляется.Динамический список виджетов QML

Я могу рода сделать это с ListView, но у него есть проблемы:

  1. Это на самом деле не виджет рабочего стола так, у вас есть все мобильное bounciness.
  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

Вы пытались использовать «Repeater» на основе «ListModel», который вы обновляете при изменении списка кнопок? – koopajah

+0

Aha, 'Repeater' было именно то, что я хотел! – Timmmm

+0

Рад, что я мог бы помочь, я работал над примером, но вы избили меня! – koopajah

ответ

2

Благодаря koopajah, я изменил его использовать Repeater и он работает в настоящее время. Обратите внимание, что кажется Repeater добавляет все к концу детей своего родителя, а значит, вы не можете полагаться на его позицию в макете - вы должны поместить его в другую раскладку, например, так:

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

       RadioButton { 
        text: modelData 
        exclusiveGroup: myListExclusiveGroup 
       } 

       model: myListOfStrings 
       focus: true 
      } 
     } 
Смежные вопросы