Russian Qt Forum

Qt => Qt Quick => Тема начата: DiamondRain от Ноябрь 10, 2010, 18:00



Название: Row, Column - подскажите, как лучше сделать.
Отправлено: DiamondRain от Ноябрь 10, 2010, 18:00
Вот такая структурка. Как лучше вывести элементы? Column вывести три раза, при этом в третий раз вывести два элемента.

(http://www.imageup.ru/img192/panel475174.png)


Название: Re: Row, Column - подскажите, как лучше сделать.
Отправлено: Пантер от Ноябрь 10, 2010, 18:03
Это ты про лайоты спрашиваешь или про что?


Название: Re: Row, Column - подскажите, как лучше сделать.
Отправлено: DiamondRain от Ноябрь 10, 2010, 18:24
Прошу прощения, забыл сказать, что это QML. Имеется ввиду вывод элементов с помощью Repeater. Мне передается из С++ массив элементов: их может быть 3, а может быть 4. Если 3, то это просто:
Row {
    Repeater {
        model: 3
        .....    
    }
}

а если у меня 4 элемента, то надо расположить их так, как на картинке. Я придумал что-то вроде такого:

Код:
import Qt 4.7

Rectangle {
    id: main
    width: 200
    height: 200

    Row {
        spacing: 2

        Repeater {
            model: 3

            Column {
                spacing: 2

                Repeater {
                    model: 1

                    Rectangle {
                        color: "red"
                        width: 30
                        height: 30
                    }
                }
            }
        }
    }
}

Только вот во втором репитере надо передавать текущее значение из первого репитера, и, если оно равно трём, то во втором репитере в model надо поставить 2. Как это сделать, не пойму никак.


Название: Re: Row, Column - подскажите, как лучше сделать.
Отправлено: BlackTass от Ноябрь 10, 2010, 18:41
model: (index==3)?2:1 не прокатит?


Название: Re: Row, Column - подскажите, как лучше сделать.
Отправлено: DiamondRain от Ноябрь 10, 2010, 18:46
Неа, не прокатило. Выводит три элемента в одну строку. Там два уровня вложенности и, скорее всего, во втором репитере индекс первого невидим. Через пропертю тоже не катит. Можно попробовать вывести два Row: в первом выводится одна правая верхняя кнопка, а во втором три остальных..


Название: Re: Row, Column - подскажите, как лучше сделать.
Отправлено: DiamondRain от Ноябрь 10, 2010, 18:52
Всё заработало. С помощью двух Row:

Код:
import Qt 4.7

Rectangle {
    id: main
    width: 200
    height: 200

    property int currentColumnNumber: 4

    Column {
        spacing: 2

        Row {
            spacing: 2
            anchors.right: parent.right

            Repeater {
                model: currentColumnNumber - 3

                Rectangle {
                    color: "red"
                    width: 30
                    height: 30
                }
            }
        }

        Row {
            spacing: 2

            Repeater {
                model: 3

                Rectangle {
                    color: "red"
                    width: 30
                    height: 30
                }
            }

        }
    }
}