Я работаю над проектом QML + c ++, и у меня есть небольшая проблема с макетами QML:
У меня есть два пользовательских компонента:
- Первый: - это боковая панель "SideTabBar.qml" (фиолетовый прямоугольник на изображении ниже).
- Второй: - это элемент в боковой панели "SideBarElement.qml".
Это изображение описывает то, о чем я говорю:
То, что я хочу: выделять каждый элемент боковой панели при нажатии.
Для этого я пытаюсь перебрать дочерние элементы columnLayout и выделить их, за исключением нажатой. Но мне не удалось заставить его работать.
SideTabBar.qml:
Item {
id: sideTabBar
width: 70
height: parent.height
property string activeElement: ""
ColumnLayout{
id:sidebarLayout
anchors.fill: parent
spacing:2
SideBarElement{elementId:"a1";image:"../assets/product.svg"}
SideBarElement{elementId:"a2";image:"../assets/product.svg"}
Item {Layout.fillHeight: true}
}
}
SideBarElement.qml:
Item {
property alias image: sideBarElementicon.source
property string elementId: ""
id: sideBarElement
width:parent.width
Layout.preferredHeight: 70
Layout.alignment: Qt.AlignTop
Rectangle{
anchors.fill: parent
color:Qt.rgba(0,0,0,0)
}
Image {
id: sideBarElementicon
source: "genericIcon.png"
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
width: 50
height: 50
}
MouseArea{
anchors.fill: parent
onClicked:{ sideTabBar.activeElement = elementId
// compiler does not even enter this loop.
// for(var child in Layout.children){
// console.log("this is a child")
// }
}
}
}