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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Открытие и закрытие одной из облостей SplitView  (Прочитано 1511 раз)
SektorCT
Частый гость
***
Offline Offline

Сообщений: 223


Просмотр профиля
« : Октябрь 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.

Спасибо заранее.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4733



Просмотр профиля WWW
« Ответ #1 : Октябрь 21, 2023, 11:09 »

попробуй просто сделать visible=false у первого айтема сплита. Если не поможет, то надо будет удалить первый айтем из списка детей (его можно отдельно хранить, чтоб не пересоздавать при каждом показе).
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
SektorCT
Частый гость
***
Offline Offline

Сообщений: 223


Просмотр профиля
« Ответ #2 : Октябрь 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
            }
        }
    }
}
Записан
SektorCT
Частый гость
***
Offline Offline

Сообщений: 223


Просмотр профиля
« Ответ #3 : Октябрь 27, 2023, 14:02 »

решение найдено, нужно было SplitView.preferredWidth: использовать
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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