2014-10-16 3 views
0

У меня есть простой qml-файл, который создает мой компонент qml, как показано ниже. Мне нужно загрузить различные элементы управления в control_section.QML: Как динамически добавлять строку

Вот различные случаи контроля мне нужно поддерживать

  • Одна кнопки
  • Две кнопки с горизонтально макетом (Row)
  • Два текстовое поле и одна кнопки с вертикальной компоновкой (Ряд)

Первый случай работает только с одной кнопкой. Однако во втором случае появляется только последняя кнопка. Как я могу отображать обе кнопки в строке?

Примечание: Проблема, кажется, что кнопки перекрывают друг друга

Frame.qml

Item { 
    id: frame 
    width: 400 
    height: 500 
    property alias components: control_section.sourceComponent 
    Loader {...} 
    Image {...} 
    Text {...} 
    Loader{ 
     id: control_section 
     ... 
    } 
} 

OtherButton.qml

Item { ..; Button {...};} 

main.qml

Frame { 
    components: Row { 
     OtherButton {} 
     OtherButton {} 
    } 
} 
+0

Можете ли вы опубликовать код, который работает? – Mitch

+0

IIRC 'Row' на самом деле не поддерживает динамический контент, это статическая конструкция. Вы либо должны использовать что-то, что поддерживает его, например, как модели списка слов или реализовать его самостоятельно. – dtech

+0

@ddriver Я только начинаю изучать опцию ListModel. – andre

ответ

0

Я решил эту проблему с помощью ListView. Это правильно отображает кнопки.

ListModel { 
    id: listModel 
    ListElement {text: "A"; next: "first.qml"} 
    ListElement {text: "B"; next: "second.qml"} 
} 

Component { 
    id: listDelegate 
    Item { 
     OtherButton {} 
    } 
} 

ListView { 
    model : listModel 
    delegate: listDelegate 
} 
Смежные вопросы