MouseArea 在 GroupBox 中的父级

MouseArea's parent in the GroupBox

MouseArea 的父项在 GroupBox 中时是什么? parent 指的是一些 container:

GroupBox {
    width: 100; height: 100
    id: rec
    MouseArea {
        anchors.fill: parent
        acceptedButtons: Qt.LeftButton | Qt.RightButton
        onClicked: {
            console.log("\tparent" + parent + "\trec" + rec)
        }
    }
}

qml: parentQQuickItem_QML_15(0x3ad3590, "container") recGroupBox_QMLTYPE_12(0x3ad2790)

Rectangle中的MouseArea时,Rectangle是其父级:

Rectangle {
    width: 100; height: 100
    id: rec
    color: "green"
    MouseArea {
        anchors.fill: parent
        acceptedButtons: Qt.LeftButton | Qt.RightButton
        onClicked: {
            console.log("\tparent" + parent + "\trec" + rec)
        }
    }
}

qml: parentQQuickRectangle(0x39d0cd0) recQQuickRectangle(0x39d0cd0)

在大多数 QML 控件(和 windows)中,内部项占用控件本身的所有子项是常见的行为。它发生在 Window, ScrollView, Flickable and even GroupBox. Such a component is available as a property (usually) called contentItem

如果你写了一个打印这样的例子 属性 你会看到 contentItem 是你要搜索的父代:

import QtQuick 2.4
import QtQuick.Controls 1.3

ApplicationWindow {
    id: container

    width: 640
    height: 480
    visible: true

    property int clicksCounter: 0

    GroupBox {
        width: 100; height: 100
        id: rec
        MouseArea {
            anchors.fill: parent
            acceptedButtons: Qt.LeftButton | Qt.RightButton
            onClicked: {
                console.log("\tparent " + parent + "\tcontentItem " + rec.contentItem)
            }
        }
    }
}

输出:

qml: parent QQuickItem_QML_26(0x1411fc0, "container") contentItem QQuickItem_QML_26(0x1411fc0, "container")