Spec-Zone.ru › Qt

Тип QML SplitView

Выравнивает элементы с перетаскиваемым разделителем между каждым элементом. Подробнее...

Заявление об импорте: import QtQuick.Controls
С: Qt 5.13
Наследует:

Container

  • Список всех членов, включая унаследованные

Свойства

  • handle : Компонент
  • orientation : перечисление
  • resizing : bool

Присоединенные свойства

  • fillHeight : bool
  • fillWidth : bool
  • maximumHeight : вещественное
  • maximumWidth : вещественное
  • minimumHeight : вещественное
  • minimumWidth : вещественное
  • preferredHeight : вещественное
  • preferredWidth : вещественное
  • view : SplitView

Методы

  • bool restoreState(state)
  • var saveState()

Подробное описание

SplitView — это элемент управления, выравнивающий элементы по горизонтали или вертикали с перетаскиваемым разделителем между каждым элементом.

SplitView поддерживает следующие присоединенные свойства для управляемых им элементов:

  • SplitView.minimumWidth
  • SplitView.minimumHeight
  • SplitView.preferredWidth
  • SplitView.preferredHeight
  • SplitView.maximumWidth
  • SplitView.maximumHeight
  • SplitView.fillWidth (true для единственного дочернего элемента)
  • SplitView.fillHeight (true для единственного дочернего элемента)

Кроме того, каждый разделитель имеет следующие только для чтения присоединенные свойства:

  • SplitHandle.hovered
  • SplitHandle.pressed

Примечание: Разделители должны быть чисто визуальными и не обрабатывать события, так как это может повлиять на их состояния hovered и pressed.

Предпочтительный размер элементов в SplitView можно указать с помощью implicitWidth и implicitHeight или SplitView.preferredWidth и SplitView.preferredHeight.

SplitView {
    anchors.fill: parent

    Item {
        SplitView.preferredWidth: 50
    }

    // ...
}

Для горизонтального SplitView не обязательно указывать предпочтительную высоту каждого элемента, так как они будут изменены на высоту представления. Это относится и к вертикальным представлениям.

При перетаскивании разделителя SplitView.preferredWidth или SplitView.preferredHeight свойство перезаписывается в зависимости от orientation представления.

Для ограничения размера элементов в горизонтальном представлении используйте следующие свойства:

SplitView {
    anchors.fill: parent

    Item {
        SplitView.minimumWidth: 25
        SplitView.preferredWidth: 50
        SplitView.maximumWidth: 100
    }

    // ...
}

Для ограничения размера элементов в вертикальном представлении используйте следующие свойства:

SplitView {
    anchors.fill: parent
    orientation: Qt.Vertical

    Item {
        SplitView.minimumHeight: 25
        SplitView.preferredHeight: 50
        SplitView.maximumHeight: 100
    }

    // ...
}

Всегда будет один элемент (элемент fill) в SplitView, у которого SplitView.fillWidth установлено в true (или SplitView.fillHeight, если orientation — Qt.Vertical). Это означает, что элемент получит все оставшееся пространство после размещения других элементов. По умолчанию это последнее видимое дочернее окно SplitView, но его можно изменить, явно установив fillWidth в true для другого элемента.

Разделитель может относиться к элементу слева/сверху или справа/снизу:

  • Если элемент fill находится справа, разделитель принадлежит элементу слева.
  • Если элемент fill находится слева, разделитель принадлежит элементу справа.

Для создания SplitView с тремя элементами и предоставления центральному элементу излишнего пространства можно сделать следующее:

SplitView {
    anchors.fill: parent
    orientation: Qt.Horizontal

    Rectangle {
        implicitWidth: 200
        SplitView.maximumWidth: 400
        color: "lightblue"
        Label {
            text: "View 1"
            anchors.centerIn: parent
        }
    }
    Rectangle {
        id: centerItem
        SplitView.minimumWidth: 50
        SplitView.fillWidth: true
        color: "lightgray"
        Label {
            text: "View 2"
            anchors.centerIn: parent
        }
    }
    Rectangle {
        implicitWidth: 200
        color: "lightgreen"
        Label {
            text: "View 3"
            anchors.centerIn: parent
        }
    }
}

Сериализация состояния SplitView

Основное назначение SplitView — позволить пользователям легко настраивать размер различных элементов интерфейса. Кроме того, предпочтительные размеры пользователей должны сохраняться между сеансами. Для этого значения свойств SplitView.preferredWidth и SplitView.preferredHeight можно сериализовать с помощью функций saveState() и restoreState():

import QtQuick.Controls
import Qt.labs.settings

ApplicationWindow {
    // ...

    Component.onCompleted: splitView.restoreState(settings.splitView)
    Component.onDestruction: settings.splitView = splitView.saveState()

    Settings {
        id: settings
        property var splitView
    }

    SplitView {
        id: splitView
        // ...
    }
}

В качестве альтернативы можно использовать функции value() и setValue() Settings:

import QtQuick.Controls
import Qt.labs.settings

ApplicationWindow {
    // ...

    Component.onCompleted: splitView.restoreState(settings.value("ui/splitview"))
    Component.onDestruction: settings.setValue("ui/splitview", splitView.saveState())

    Settings {
        id: settings
    }

    SplitView {
        id: splitView
        // ...
    }
}

См. также SplitHandle, Настройка SplitView и Контейнеры элементов управления.

Документация по свойствам

handle : Component

Это свойство содержит компонент разделителя.

Экземпляр этого компонента будет создан count - 1 раз, если count больше, чем 1.

В следующей таблице показано, как каждый разделитель будет изменен в зависимости от ориентации split-view:

Ориентация Ширина разделителя Высота разделителя
Qt.Horizontal implicitWidth Высота SplitView.
Qt.Vertical Ширина SplitView. implicitHeight

Чтобы изменить размер разделителя для событий мыши и касания без изменения его визуального размера, используйте containmentMask:

SplitView {
    id: splitView
    anchors.fill: parent

    handle: Rectangle {
        implicitWidth: 4
        implicitHeight: 4
        color: SplitHandle.pressed ? "#81e889"
            : (SplitHandle.hovered ? Qt.lighter("#c2f4c6", 1.1) : "#c2f4c6")

        containmentMask: Item {
            x: -width / 2
            width: 64
            height: splitView.height
        }
    }

    Rectangle {
        implicitWidth: 150
        color: "#444"
    }
    Rectangle {
        implicitWidth: 50
        color: "#666"
    }
}

См. также Настройка SplitView.

orientation : перечисление

Это свойство содержит ориентацию SplitView.

Ориентация определяет, как выравниваются разделенные элементы:

Возможные значения:

Константа Описание
Qt.Horizontal Элементы выравниваются по горизонтали (по умолчанию).
Qt.Vertical Элементы выравниваются по вертикали.

[только для чтения] resizing : bool

Это свойство true при перетаскивании пользователем разделенных элементов с помощью разделителей.

Документация по присоединенным свойствам

SplitView.fillHeight : bool

Это присоединенное свойство определяет, занимает ли элемент оставшееся пространство в SplitView после размещения всех других элементов.

По умолчанию последнее видимое дочернее окно SplitView имеет это значение, но его можно изменить, явно установив fillHeight в true для другого элемента.

Высота разделительного элемента с fillHeight установленным в true все еще ограничена значениями minimumHeight и maximumHeight.

См. также minimumHeight, preferredHeight, maximumHeight и fillWidth.

SplitView.fillWidth : bool

Это присоединенное свойство определяет, занимает ли элемент оставшееся пространство в SplitView после размещения всех других элементов.

По умолчанию последнее видимое дочернее окно SplitView имеет это значение, но его можно изменить, явно установив fillWidth в true для другого элемента.

Ширина разделительного элемента с fillWidth установленным в true все еще ограничена значениями minimumWidth и maximumWidth.

См. также minimumWidth, preferredWidth, maximumWidth и fillHeight.

SplitView.maximumHeight : real

Это присоединённое свойство управляет максимальной высотой элемента разделения. preferredHeight ограничено значениями minimumHeight и maximumHeight. Элемент разделения нельзя перетащить, чтобы он стал больше своего maximumHeight.

Значение по умолчанию — Infinity. Чтобы сбросить это свойство до значения по умолчанию, установите его в undefined.

См. также minimumHeight, preferredHeight, fillHeight и maximumWidth.

SplitView.maximumWidth : real

Это присоединённое свойство управляет максимальной шириной элемента разделения. preferredWidth ограничено значениями minimumWidth и maximumWidth. Элемент разделения нельзя перетащить, чтобы он стал больше своего maximumWidth.

Значение по умолчанию — Infinity. Чтобы сбросить это свойство до значения по умолчанию, установите его в undefined.

См. также minimumWidth, preferredWidth, fillWidth и maximumHeight.

SplitView.minimumHeight : real

Это присоединённое свойство управляет минимальной высотой элемента разделения. preferredHeight ограничено значениями minimumHeight и maximumHeight. Элемент разделения нельзя перетащить, чтобы он стал меньше своего minimumHeight.

Значение по умолчанию — 0. Чтобы сбросить это свойство до значения по умолчанию, установите его в undefined.

См. также maximumHeight, preferredHeight, fillHeight и minimumWidth.

SplitView.minimumWidth : real

Это присоединённое свойство управляет минимальной шириной элемента разделения. preferredWidth ограничено значениями minimumWidth и maximumWidth. Элемент разделения нельзя перетащить, чтобы он стал меньше своего minimumWidth.

Значение по умолчанию — 0. Чтобы сбросить это свойство до значения по умолчанию, установите его в undefined.

См. также maximumWidth, preferredWidth, fillWidth и minimumHeight.

SplitView.preferredHeight : real

Это присоединённое свойство управляет предпочтительной высотой элемента разделения. Предпочтительная высота будет использоваться в качестве размера элемента и будет ограничена значениями minimumHeight и maximumHeight. Если предпочтительная высота не задана, будет использоваться implicitHeight элемента.

При изменении размера элемента разделения preferredHeight будет установлено для отслеживания нового размера.

По умолчанию это свойство не задано, и поэтому используется implicitHeight. Чтобы сбросить это свойство до значения по умолчанию, установите его в undefined.

Примечание: Не устанавливайте свойство height элемента разделения, так как оно будет перезаписано при каждом вычислении макета SplitView.

См. также minimumHeight, maximumHeight, fillHeight и preferredWidth.

SplitView.preferredWidth : real

Это присоединённое свойство управляет предпочтительной шириной элемента разделения. Предпочтительная ширина будет использоваться в качестве размера элемента и будет ограничена значениями minimumWidth и maximumWidth. Если предпочтительная ширина не задана, будет использоваться implicitWidth элемента.

При изменении размера элемента разделения preferredWidth будет установлено для отслеживания нового размера.

По умолчанию это свойство не задано, и поэтому используется implicitWidth. Чтобы сбросить это свойство до значения по умолчанию, установите его в undefined.

Примечание: Не устанавливайте свойство width элемента разделения, так как оно будет перезаписано при каждом вычислении макета SplitView.

См. также minimumWidth, maximumWidth, fillWidth и preferredHeight.

SplitView.view : SplitView

Это присоединённое свойство содержит элемент разделения, к которому он присоединён, или null если элемент не находится в элементе разделения.

Документация по методам

bool restoreState(state)

Считывает предпочтительные размеры из state и применяет их к элементам разделения.

Возвращает true если состояние было успешно восстановлено, иначе false.

См. также Сериализация состояния SplitView и saveState().

var saveState()

Сохраняет предпочтительные размеры элементов разделения в массив байтов и возвращает его.

См. также Сериализация состояния SplitView и restoreState().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qml-qtquick-controls2-splitview.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API