I have a hierarchy of objects and I want to select objects by a menu. Menu represents corresponding hierarchy of submenus. But if object has subobjests then corresponding menu item cannot catch mouse click event. See code below:
import QtQuick 2.13
import QtQuick.Window 2.13
import QtQuick.Controls 2.13
Window {
visible: true
width: 640
height: 480
Menu {
id: contextMenu
MenuItem {
text: "Object1"
onTriggered: console.log(text + " selected")
}
Menu {
title: "Object2"
onTriggered: console.log(title + " selected") // Error!!! Non-existent property "onTriggered"!
MenuItem {
text: "SubObject1"
onTriggered: console.log(text + " selected")
}
MenuItem {
text: "SubObject2"
onTriggered: console.log(text + " selected")
}
}
MenuItem {
text: "Object3"
onTriggered: console.log(text + " selected")
}
}
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.RightButton
onClicked: {
if (mouse.button === Qt.RightButton)
contextMenu.popup()
}
}
}
Class Menu does not have triggered or clicked signal. Alternative variant is to add MenuItem to other MenuItem:
MenuItem {
text: "Object2"
onTriggered: console.log(text + " selected")
MenuItem {
text: "SubObject1"
onTriggered: console.log(text + " selected")
}
MenuItem {
text: "SubObject2"
onTriggered: console.log(text + " selected")
}
}
In this case the program runs but the menu looks strange: it does not have submenu and all sumenu items are located at the same place:
Is it possible to handle mouse click on menu item containing submenu?
