Примерно так. Там для GridView еще вроде cellWidth и cellHeight надо задавать.
GridView {
id: gridView
model: 5
delegate: Rectangle {
width: 100
height: 100
color: index == gridView.currentIndex ? "red" : "black"
MouseArea {
anchors.fill: parent
onClicked: gridView.currentIndex = index
}
}
}