2015-10-05 1 views
0

Я хотел бы, чтобы фактическое содержимое Tab внутри TabView привязывалось или выстраивалось в линию до нижней части другого визуального элемента. В этом случае tabBar в верхней части будет перекрываться с другим элементом, о котором идет речь.Выровнять содержимое QML TabView с другим элементом, так что tabBar накладывается на этот элемент

Моя проблема заключается в том, что я не знаю, как получить координату y содержимого Tab TabView или, альтернативно, как получить высоту кнопок вкладок в tabBar, чтобы я мог компенсировать выравнивание на основе этого ,

Я могу придумать два способа решить эту проблему, обе из которых являются неуклюжими: Вариант 1 - я мог бы сделать TabView без содержимого, которое находится внутри моего другого элемента. Тогда я мог бы сделать второй TabView с tabsVisible = false. Затем соедините 2 вместе.

Вариант 2 - я мог бы переопределить вкладку: в TabViewStyle задайте высоту для него из свойства, таким образом, я мог бы компенсировать TabView.y на основе высоты tabBar.

Вариант 3: Как-то получить координату y содержимого вкладки в TabView (относительно TabView или родительского элемента) или каким-то образом получить существующую высоту вкладки (кнопки). Я не знаю, как это сделать.

Варианты 1 и 2 кажутся очень неуклюжими. Есть идеи?

ответ

0

На самом деле вы можете получить эту информацию очень легко. TabView определите свойство contentItem, содержащее элемент содержимого в виде вкладок. Высота Кнопки закладки поэтому tabView.height - tabView.contentItem.height

Пример:

import QtQuick 2.2 
import QtQuick.Controls 1.1 

Item { 
    width: 350 
    height: 150 

    TabView 
    { 
     id: tabview 
     height: parent.height 
     width: parent.width/2 
     Component.onCompleted: {addTab("1");addTab("2")} 
    } 

    Column 
    { 
     anchors.left: tabview.right 
     anchors.right: parent.right 
     Rectangle 
     { 
      width: parent.width 
      height: tabview.height-tabview.contentItem.height 
      color: "red" 
     } 
     Rectangle 
     { 
      width: parent.width 
      color: "yellow" 
      height: tabview.contentItem.height 
     } 
    } 
} 
Смежные вопросы