QML - Почему implicitWidth TabBar зависит от привязки внутренней ширины TabButton к его implicitWidth?

Почему в следующем коде implicitWidth из TabBar меняется, когда я комментирую width: implicitWidth в TabButtonс? Почему то, что я устанавливаю width компонента быть равным его implicitWidth изменить implicitWidth? Также я подумал width был установлен на implicitWidth по умолчанию в любом случае, когда widthне задан явно. Поэтому я не понимаю, зачем width: implicitWidthбудет иметь какие-либо последствия. Вот код:

Item {
   id: root
   height: 480
   width: 640

   RowLayout {
      anchors.fill: parent

      TabBar {
         id: bar
         Layout.fillHeight: true
         implicitWidth: Math.max(homeTabButton.implicitWidth, discoverTabButton.implicitWidth, activityTabButton.implicitWidth)

         background: Rectangle {
            color: "yellow"
         }

         contentItem: ListView {
            model: bar.contentModel
         }


         TabButton {
            id: homeTabButton
            width: implicitWidth // I cannot comment this out
            text: qsTr("Home")
         }
         TabButton {
            id: discoverTabButton
            width: implicitWidth // I cannot comment this out
            text: qsTr("Discover")
         }
         TabButton {
            id: activityTabButton
            width: implicitWidth // I cannot comment this out
            text: qsTr("Activity")
         }
      }

      StackLayout {
         Layout.fillWidth: true
         Layout.fillHeight: true
         currentIndex: bar.currentIndex
         Pane {
            id: homeTab
            background: Rectangle {
               color: "blue"
            }
         }
         Pane {
            id: discoverTab
            background: Rectangle {
               color: "red"
            }
         }
         Pane {
            id: activityTab
            background: Rectangle {
               color: "green"
            }
         }
      }
   }
}

1 ответ

U присвоили неявную ширину перед

implicitWidth: Math.max(homeTabButton.implicitWidth, discoverTabButton.implicitWidth, activityTabButton.implicitWidth)

вот почему, когда ширина комментария в tabButton принимает ширину как 0.

использовать

width: Math.max(homeTabButton.implicitWidth, discoverTabButton.implicitWidth, activityTabButton.implicitWidth)

в вашем коде и прокомментируйте эту ширину в tabButton.

Другие вопросы по тегам