Russian Qt Forum

Qt => Model-View (MV) => Тема начата: Mira от Ноябрь 11, 2015, 06:48



Название: QML: Как перейти к строке, в которой нажата кнопка?
Отправлено: Mira от Ноябрь 11, 2015, 06:48
Добрый день,
у меня возникла следующая задача - есть TreeView, в одной из колонок картинка, при нажатии на которую (происходит событие)
но! Фокус (текущая строка) не меняется на строку с кликнутой картинкой, так как на картинку наложена MouseArea она перекрывает TreeView, и фокус не переходит на эту строчку. Как сделать, чтоб при нажатии на картинку и фокус смещался на эту строку и событие вызвалось? Надеюсь понятно объясняю, вот собственно код:
Код:
	TreeView {
clip: true
id: mapsTreeView
objectName: "mapsTreeView"
model: theModel

TableViewColumn {
width: 100
role: "name_role"
title: "Map"
}
TableViewColumn {
width: 50
role: "description_role"
}
TableViewColumn {
id: imageColumn
width: 20
role: "image_role"
delegate: Item {
MouseArea {
anchors.fill: parent
onClicked: {
mapsTreeView.sigChangeState()
}
}
Image {
anchors.fill: parent
width: 5
source: "icon" + styleData.value + ".png"
}
}

}
signal sigChangeState()
}


Название: Re: TreeView - как изменить фокус при нажатии на Mousearea?
Отправлено: Mira от Ноябрь 11, 2015, 07:25
Есть еще вариант с кнопкой:

      
Код:
TableViewColumn {
id: imageColumn
width: 20
role: "image_role"
delegate: Button {
iconSource: "icon" + styleData.value + ".png"
onClicked: mapsTreeView.sigChangeState()
}

Но опять же: при нажатии на кнопку из соседней строки - фокус на строку не переходит, как  это происходит при нажатии на текст.


В ListView я это реализовывала просто :
Код:
onClicked:{
mapsView.currentIndex=model.index
mapsState.sigChangeState()
}

но у treeView в currentIndex нельзя записать.