Russian Qt Forum

Qt => Qt Quick => Тема начата: SektorCT от Январь 29, 2017, 15:35



Название: Размещение во вкладках tabbar контента из других qml файлов
Отправлено: SektorCT от Январь 29, 2017, 15:35
Всем привет.
Такой вопрос, как можно разместить во вкладках tabbar контента который будет уже готов в других файлах?
Вот пример как сделано у меня:
Код:
header: TabBar
    {
        id: tabBar
        currentIndex: swipeView.currentIndex
        TabButton
        {
            text: qsTr("Tab1")
        }
        TabButton
        {
            text: qsTr("Tab2")
        }
        TabButton
        {
            text: qsTr("Tab3")
        }
       
    } //tabbar

    SwipeView
    {
        id: swipeView
        anchors.fill: parent
        currentIndex: tabBar.currentIndex
        Tab1  //Имена файлов с готовым контентом для размещения внутри созданной вкладки. Подключены через import ""
        {

        }

        Tab2
        {

        }

        Tab3
        {

        }
    }

Как вы видете вкладки размещаются по порядку заполняя через SwipeView их содержимое.
Можно ли разместить контент но другим способов чтоыб не поулчать Swipe если я буду перепрыгивать со вкладки на вкладку? В данном виде они выглядят как склееные Tab1:Tab2:Tab3

Если я сделаю так:
Код:
TabButton
{
     text: qsTr("Tab1")
             Tab2
        {

        }
}

То я получу просто наложение контента на кнопку вкладки. Хотя может я не все правильно делаю.
Буду признателен за советы иили варианты решения.
Спасибо


Название: Re: Размещение во вкладках tabbar контента из других qml файлов
Отправлено: Отражение луны от Январь 31, 2017, 03:42
Сложно понять Ваш вопрос, но судя по всему Вы хотите избавиться от SwipeView.
На самом деле Вы можете заменить SwipeView обычными Item-ом (anchors те же), внутри которого разместить Tab1, Tab2 и так далее, задать им

Код:
anchors.fill: parent
visible: (tabBar.currentPostion==0) // 0 для первого, 1 для второго и так далее

Это будет работать как обычные вкладки.


Название: Re: Размещение во вкладках tabbar контента из других qml файлов
Отправлено: SektorCT от Январь 31, 2017, 21:46
Сложно понять Ваш вопрос, но судя по всему Вы хотите избавиться от SwipeView.
На самом деле Вы можете заменить SwipeView обычными Item-ом (anchors те же), внутри которого разместить Tab1, Tab2 и так далее, задать им

Код:
anchors.fill: parent
visible: (tabBar.currentPostion==0) // 0 для первого, 1 для второго и так далее

Это будет работать как обычные вкладки.

А вы не могли бы поподробнее описать где именно будут обьявлятся Item и где мы им выставляем позиции дял размещения?
Чет вообще не понял, все перепробовал с вашим примером, не работает(


Название: Re: Размещение во вкладках tabbar контента из других qml файлов
Отправлено: Отражение луны от Февраль 01, 2017, 01:13
Крч. Все надо оставить так же, поменять текст SwipeView на Item, прописать к каждому табу то, что я писал выше.
Основной принцип тут в том, что вы размещаете табы стандартным способом безо всяких view и просто биндите их visibility к номеру текущей выбранной вкладки.


Название: Re: Размещение во вкладках tabbar контента из других qml файлов
Отправлено: SektorCT от Февраль 02, 2017, 21:30
Крч. Все надо оставить так же, поменять текст SwipeView на Item, прописать к каждому табу то, что я писал выше.
Основной принцип тут в том, что вы размещаете табы стандартным способом безо всяких view и просто биндите их visibility к номеру текущей выбранной вкладки.

А есть ли какая то возможность обьявлять сразу там в TabButton? Что то типа того

Код:
header: TabBar
    {
        id: tabBar
        currentIndex: swipeView.currentIndex
        TabButton
        {
            text: qsTr("Tab1l")
            Tab1 {
            }
        }
        TabButton
        {
            text: qsTr("Tab2")
            Tab2 {
            }
        }
        TabButton
        {
            text: qsTr("Tab3")
            Tab3 {
            }
        }
}

Именно в таком виде что сейчас это не работает.


Название: Re: Размещение во вкладках tabbar контента из других qml файлов
Отправлено: Отражение луны от Февраль 03, 2017, 00:59
Нет, потому что таббаттону принадлежит область, занимаемая этим самым таббатаном, а вам нужно его разместить в совершенно другой области.
Зачем вам это нужно?
Вы можете:
1) Использовать Loader, храня в TabButton путь к файлу Tab. В этом случае страница всегда будет пересоздаваться.
2) Создать каждой TabButton property Item, в которой размещать Tab, и потом через javascript создавать объект, запоминать ссылку на него, и размещать в нужной области. Выглядеть такое объявление будет примерно так:

Код:
TabButton {
...
property Item content: Tab1 {
...
                }
}


Я готов рассказать как осуществить один из вариантов, но мне бы хотелось узнать о цели использовать именно данный метод объявления.
Есть предположение, что то, чего вы хотите на самом деле, реализуется принципиально иначе.