Russian Qt Forum

Qt => Qt Quick => Тема начата: SektorCT от Октябрь 20, 2023, 14:40



Название: Открытие и закрытие одной из облостей SplitView
Отправлено: SektorCT от Октябрь 20, 2023, 14:40
всем привет.
Есть обьект SplitView в котормо 2 части состоящие из TreeView и соседней.
Может кто подсказать как можно по кнопке открывать и закрывать часть с TreeView ? По сути это как с Drawer обьектом но у последнего нельзя перетягиванием менять ширину, а нужно как раз это.
Ниже малый кусок кода привожу.

Код:
SplitView
    {
        id: splitView

        anchors.fill: parent
        orientation: Qt.Horizontal

        Rectangle
        {
            id: rectTreeView
//                SplitView.minimumWidth: root.width * 0.1
//                SplitView.implicitWidth: root.width * 0.1
//            SplitView.maximumWidth: root.width * 0.25

            width: root.width * 0.5
            color: root.pelData.colorBackground

            TreeView
            {
                id: treeViewBookmark

                anchors.fill: parent
            }
        }

        PdfMultiPageView
        {
            id: pdfView
            Layout.fillWidth: true
         }
}

ну а сама кнопка дял открытия и закрытия области должна быть в другмо файле qml, то есть как я понимаю нужно в этйо части хранить какое то состояние true и false.

Спасибо заранее.


Название: Re: Открытие и закрытие одной из облостей SplitView
Отправлено: kambala от Октябрь 21, 2023, 11:09
попробуй просто сделать visible=false у первого айтема сплита. Если не поможет, то надо будет удалить первый айтем из списка детей (его можно отдельно хранить, чтоб не пересоздавать при каждом показе).


Название: Re: Открытие и закрытие одной из облостей SplitView
Отправлено: SektorCT от Октябрь 27, 2023, 09:02
попробуй просто сделать visible=false у первого айтема сплита. Если не поможет, то надо будет удалить первый айтем из списка детей (его можно отдельно хранить, чтоб не пересоздавать при каждом показе).
Спасибо большое за совет, поулчилось. Но есть нюанс.
Я пытаюсь сделать дефолтную ширину для первого открытия, но почему то именно первое открытия панельс 0 шириной, а точнее она как бы сдвинута в 0.
Но если я потом изменяю мышкой ширину, то есть раздвигаю панель, скрываю и снвоа отображаю панель, ширина уже запоминается.
Может вы знаете как задать дефолтнео значение? Ниже привожу часть кода.

Код:
Rectangle
{
    id: root

    property int defaultWidthBookmark : root.width * 0.5

    SplitView
    {
        id: splitView

        anchors.fill: parent
        orientation: Qt.Horizontal

        Rectangle
        {
            id: rectTreeView

            width: root.defaultWidthBookmark
            visible: false

            property bool st: false

            onVisibleChanged:
            {
                if(rectTreeView.visible === true)
                {
                    console.log("true")
                    rectTreeView.width = root.defaultWidthBookmark
                }
                else
                {
                    console.log("false")
                }

                console.log("onVisibleChanged: ", rectTreeView.width, root.defaultWidthBookmark)
            }

            TreeView
            {
                id: treeViewBookmark
            }
        }
    }
}


Название: Re: Открытие и закрытие одной из облостей SplitView
Отправлено: SektorCT от Октябрь 27, 2023, 14:02
решение найдено, нужно было SplitView.preferredWidth: использовать