Russian Qt Forum
Ноябрь 01, 2024, 14:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Размещение во вкладках tabbar контента из других qml файлов  (Прочитано 4761 раз)
SektorCT
Частый гость
***
Offline Offline

Сообщений: 229


Просмотр профиля
« : Январь 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
        {

        }
}

То я получу просто наложение контента на кнопку вкладки. Хотя может я не все правильно делаю.
Буду признателен за советы иили варианты решения.
Спасибо
Записан
Отражение луны
Гость
« Ответ #1 : Январь 31, 2017, 03:42 »

Сложно понять Ваш вопрос, но судя по всему Вы хотите избавиться от SwipeView.
На самом деле Вы можете заменить SwipeView обычными Item-ом (anchors те же), внутри которого разместить Tab1, Tab2 и так далее, задать им

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

Это будет работать как обычные вкладки.
Записан
SektorCT
Частый гость
***
Offline Offline

Сообщений: 229


Просмотр профиля
« Ответ #2 : Январь 31, 2017, 21:46 »

Сложно понять Ваш вопрос, но судя по всему Вы хотите избавиться от SwipeView.
На самом деле Вы можете заменить SwipeView обычными Item-ом (anchors те же), внутри которого разместить Tab1, Tab2 и так далее, задать им

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

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

А вы не могли бы поподробнее описать где именно будут обьявлятся Item и где мы им выставляем позиции дял размещения?
Чет вообще не понял, все перепробовал с вашим примером, не работает(
Записан
Отражение луны
Гость
« Ответ #3 : Февраль 01, 2017, 01:13 »

Крч. Все надо оставить так же, поменять текст SwipeView на Item, прописать к каждому табу то, что я писал выше.
Основной принцип тут в том, что вы размещаете табы стандартным способом безо всяких view и просто биндите их visibility к номеру текущей выбранной вкладки.
Записан
SektorCT
Частый гость
***
Offline Offline

Сообщений: 229


Просмотр профиля
« Ответ #4 : Февраль 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 {
            }
        }
}

Именно в таком виде что сейчас это не работает.
Записан
Отражение луны
Гость
« Ответ #5 : Февраль 03, 2017, 00:59 »

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

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


Я готов рассказать как осуществить один из вариантов, но мне бы хотелось узнать о цели использовать именно данный метод объявления.
Есть предположение, что то, чего вы хотите на самом деле, реализуется принципиально иначе.
« Последнее редактирование: Февраль 03, 2017, 01:07 от Komorebi » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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