Russian Qt Forum
Май 08, 2024, 12:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Row, Column - подскажите, как лучше сделать.  (Прочитано 4727 раз)
DiamondRain
Гость
« : Ноябрь 10, 2010, 18:00 »

Вот такая структурка. Как лучше вывести элементы? Column вывести три раза, при этом в третий раз вывести два элемента.

Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Ноябрь 10, 2010, 18:03 »

Это ты про лайоты спрашиваешь или про что?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
DiamondRain
Гость
« Ответ #2 : Ноябрь 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. Как это сделать, не пойму никак.
Записан
BlackTass
Гость
« Ответ #3 : Ноябрь 10, 2010, 18:41 »

model: (index==3)?2:1 не прокатит?
Записан
DiamondRain
Гость
« Ответ #4 : Ноябрь 10, 2010, 18:46 »

Неа, не прокатило. Выводит три элемента в одну строку. Там два уровня вложенности и, скорее всего, во втором репитере индекс первого невидим. Через пропертю тоже не катит. Можно попробовать вывести два Row: в первом выводится одна правая верхняя кнопка, а во втором три остальных..
Записан
DiamondRain
Гость
« Ответ #5 : Ноябрь 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
                }
            }

        }
    }
}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 22.