Контейнеры-позиционеры

Последнее обновление: 18.12.2023

Для автоматического управления расположением элементов QML предоставляет ряд специальных контейнеров-позиционеров (positioner):

  • Column: располагает вложенные элементы в столбик

  • Row: располагает вложенные элементы в строку

  • Grid: располагает вложенные элементы в виде сетки

  • Flow: располагает вложенные элементы подобно тому, как слова располагаются на странице

Используем контейнер Column для расположения элементов в столбик:

import QtQuick

Window {
    width: 280
    height: 300
    visible: true
    title: "METANIT.COM"

    Column{
        Rectangle{
            height: 80
            width: 80
            color: "#eb4d4b"    // красный
        }
        Rectangle{
            height: 80
            width: 80
            color: "#16a085"    // зеленый
        }

        Rectangle{
            height: 80
            width: 80
            color: "#0984e3"    // синий
        }
    }
}
Расположение элементов в столбик в Qt и QML

Расположение в строку с помощью элемента Row:

import QtQuick

Window {
    width: 300
    height: 250
    visible: true
    title: "METANIT.COM"

    Row{
        Rectangle{
            height: 100
            width: 100
            color: "#eb4d4b"    // красный
        }
        Rectangle{
            height: 100
            width: 100
            color: "#16a085"    // зеленый
        }
        Rectangle{
            height: 100
            width: 100
            color: "#0984e3"    // синий
        }
    }
}
Расположение элементов в строку в Qt и QML

Пространство между элементами

По умолчанию элементы располагаются впритык друг к другу. Но с помощью свойства spacing можно установить пространство между элементами:

import QtQuick

Window {
    width: 280
    height: 300
    visible: true
    title: "METANIT.COM"

    Column{
        spacing: 10 // пространство между элементами
        Rectangle{
            height: 80
            width: 80
            color: "#eb4d4b"    // красный
        }
        Rectangle{
            height: 80
            width: 80
            color: "#16a085"    // зеленый
        }
        Rectangle{
            height: 80
            width: 80
            color: "#0984e3"    // синий
        }
    }
}
Отступы между элементами в строке Row и столбце Column в Qt и QML

Отступы

С помощью свойства padding можно настроить отступ элементов от границ контейнера:

import QtQuick

Window {
    width: 280
    height: 280
    visible: true
    title: "METANIT.COM"

    Column{
        spacing: 10 // пространство между элементами
        padding: 8  // отступ от границ контейнера
        Rectangle{
            height: 80
            width: 80
            color: "#eb4d4b"    // красный
        }
        Rectangle{
            height: 80
            width: 80
            color: "#16a085"    // зеленый
        }
        Rectangle{
            height: 80
            width: 80
            color: "#0984e3"    // синий
        }
    }
}
Отступы элементов от границ контейнера и свойство padding в Qt и QML

С помощью дополнительных свойств можно настроить каждый из 4-х отступов по отдельности:

  • topPadding: отступ сверху

  • leftPadding: отступ слева

  • rightPadding: отступ справа

  • bottomPadding: отступ снизу

Применение:

import QtQuick

Window {
    width: 280
    height: 280
    visible: true
    title: "METANIT.COM"

    Column{
        spacing: 8 // пространство между элементами
        topPadding: 10  // отступ сверху
        leftPadding: 30 // отступ слева
        rightPadding: 10 // отступ справа
        bottomPadding: 5  // отступ снизу
        Rectangle{
            height: 80
            width: 80
            color: "#eb4d4b"    // красный
        }
        Rectangle{
            height: 80
            width: 80
            color: "#16a085"    // зеленый
        }
        Rectangle{
            height: 80
            width: 80
            color: "#0984e3"    // синий
        }
    }
}
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850