SplitView QML 类型

在每项之间有一个可拖动的拆分器来布局项。 更多信息...

导入语句import QtQuick.Controls
继承

Container

属性

附加属性

方法

详细描述

SplitView 是一个控件,它可以在每项之间带有可拖动的拆分器,以水平或垂直方式布局项。

SplitView 支持它管理的项的以下附加属性:

此外,每个处理程序都有以下只读附加属性:

注意:处理程序应仅用于视觉显示,不应处理事件,因为它可能会干扰其悬停和按下状态。

SplitView 中项的首选大小可以通过 implicitWidthimplicitHeightSplitView.preferredWidthSplitView.preferredHeight 来指定。

SplitView {
    anchors.fill: parent

    Item {
        SplitView.preferredWidth: 50
    }

    // ...
}

对于水平 SplitView,不需要指定每个项的首选高度,因为它们将调整为与视图相同的高度。反之亦然适用于垂直视图。

当拖动拆分处理程序时,将覆盖 SplitView.preferredWidthSplitView.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
    }

    // ...
}

SplitView 中总会有一个项目(填充项目),其 SplitView.fillWidth 设置为 true(或当 方向Qt.Vertical 时,SplitView.fillHeight)。这意味着当其他项目布局完成后,该项目将获得所有剩余空间。默认情况下,SplitView 的最后一个可见子项将具有此设置,但可以通过在另一个项目上显式设置 fillWidthtrue 来更改它。

手柄可以位于项目左侧或顶部,也可以位于右侧或底部

  • 如果填充项目在右侧:手柄属于左侧项。
  • 如果填充项目在左侧:手柄属于右侧项。

要创建一个包含三个项目的 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 的主要目的是允许用户轻松配置各种 UI 元素的大小。此外,用户的偏好大小应该在会话之间记住。为了实现这一点,可以通过 saveState() 和 restoreState() 函数来序列化 SplitView.preferredWidthSplitView.preferredHeight 属性的值

import QtCore
import QtQuick.Controls

ApplicationWindow {
    // ...

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

    Settings {
        id: settings
        property var splitView
    }

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

或者,可以使用 value() 和 setValue() 函数设置

import QtCore
import QtQuick.Controls

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 : 组件

这个属性包含手柄组件。

该组件的实例将被实例化 count - 1 次,前提是 count 大于 1

以下表格说明了根据 SplitView 的方向如何调整每个手柄的大小

方向手柄宽度手柄高度
Qt.Horizontal隐含宽度SplitView高度
Qt.VerticalSplitView宽度隐含高度

要更改手柄的鼠标和触摸事件的大小,而不更改其视觉大小,请使用 containmentMask

SplitView {
    id: splitView
    anchors.fill: parent

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

        containmentMask: Item {
            x: (handleDelegate.width - 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 : 布尔 [只读]

当用户通过在拆分器手柄上拖动来调整拆分项的大小时,此属性为 true


附加属性文档

SplitView.fillHeight : 布尔

此附加属性控制项目是否在所有其他项目布局后获取拆分视图中的剩余空间。

默认情况下,分割视图的最后一个可见子项将填充整个视图,但可以通过在另一个项上显式设置 fillHeighttrue 来更改。如果多个项将 fillHeight 设置为 true,则最顶部的项将填充视图。

具有 fillHeight 设置为 true 的分割项的高度仍然被限制在其 minimumHeightmaximumHeight 之间。

另请参阅 minimumHeightpreferredHeightmaximumHeight,和 fillWidth


SplitView.fillWidth : bool

此附加属性控制项目是否在所有其他项目布局后获取拆分视图中的剩余空间。

默认情况下,分割视图的最后一个可见子项将填充视图,但可以通过在另一个项上显式设置 fillWidthtrue 来更改。如果多个项将 fillWidth 设置为 true,则最左边的项将填充视图。

具有 fillWidth 设置为 true 的分割项的宽度仍然被限制在其 minimumWidthmaximumWidth 之间。

另请参阅 minimumWidthpreferredWidthmaximumWidth,和 fillHeight


SplitView.maximumHeight : real

此属性控制分割项的最大高度。在 minimumHeight 和最大高度之间绑定 preferredHeight。分割项不能被拖拽超过其 maximumHeight

默认值是 Infinity。要将此属性重置为其默认值,请将其设置为 undefined

另请参阅 minimumHeightpreferredHeightfillHeight,和 maximumWidth


SplitView.maximumWidth : real

此属性控制分割项的最大宽度。在 minimumWidth 和最大宽度之间绑定 preferredWidth。分割项不能被拖拽超过其 maximumWidth

默认值是 Infinity。要将此属性重置为其默认值,请将其设置为 undefined

另请参阅 minimumWidthpreferredWidthfillWidth,和 maximumHeight


SplitView.minimumHeight : real

此属性控制分割项的最小高度。在最小高度和 maximumHeight 之间绑定 preferredHeight。分割项不能被拖拽小于其 minimumHeight

默认值是 0。要将此属性重置为其默认值,请将其设置为 undefined

另请参阅 maximumHeightpreferredHeightfillHeightminimumWidth


SplitView.minimumWidth : 实数

此附加属性控制分割项的最小宽度。首选宽度会在最小宽度和 最大宽度 之间绑定。分割项不能被拖动至小于其 minimumWidth

默认值是 0。要将此属性重置为其默认值,请将其设置为 undefined

另请参阅 maximumWidthpreferredWidthfillWidthminimumHeight


SplitView.preferredHeight : 实数

此附加属性控制分割项的首选高度。首选高度将用作项的大小,并在 minimumHeightmaximumHeight 之间绑定。如果没有设置首选高度,将使用项的 隐式高度

当分割项调整大小时,首选高度将被设置,以跟踪新的大小。

默认情况下,此属性未设置,因此将使用 隐式高度。要将此属性重置为其默认值,请将其设置为 undefined

注意:不要设置分割项的 高度 属性,因为它将在每次 SplitView 布局时被覆盖。

另请参阅 minimumHeightmaximumHeightfillHeightpreferredWidth


SplitView.preferredWidth : 实数

此附加属性控制分割项的首选宽度。首选宽度将用于确定项的大小,并将绑定在 minimumWidthmaximumWidth 之间。如果没有设置首选宽度,将使用项的 隐式宽度

当分割项调整大小时,首选宽度将被设置,以跟踪新的大小。

默认情况下,此属性未设置,因此将使用 隐式宽度。要将此属性重置为其默认值,请将其设置为 undefined

注意:不要设置分割项的 宽度 属性,因为它将在每次 SplitView 布局时被覆盖。

另请参阅 minimumWidthmaximumWidthfillWidthpreferredHeight


SplitView.view : SplitView

此附加属性保存了所附加项目分割视图的信息,或者当项目不在分割视图中时返回null


方法文档

bool restoreState(state)

state中读取首选大小并将其应用到分割项中。

如果成功恢复状态,则返回true,否则返回false

另请参阅序列化SplitView的状态saveState


var saveState()

将分割项的首选大小保存到字节数组中并返回。

另请参阅序列化SplitView的状态restoreState


© 2024 Qt公司。本文档中的文档贡献者是各自所有者的版权所有者。本文档是在自由软件基金会出版的GNU自由文档许可版本1.3的条款下提供的。Qt及其相关标记是芬兰的Qt公司和/或在全世界其他国家的商标。所有其他商标均为各自所有者的财产。