GroupBox 中 MouseArea 的父级

Posted

技术标签:

【中文标题】GroupBox 中 MouseArea 的父级【英文标题】:MouseArea's parent in the GroupBox 【发布时间】:2015-07-21 12:55:42 【问题描述】:

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)

【问题讨论】:

【参考方案1】:

在大多数 QML 控件(和窗口)中,内部项占据控件本身的所有子项是很常见的行为。它发生在WindowScrollViewFlickable 甚至GroupBox。这样的组件可用作(通常)称为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: 父 QQuickItem_QML_26(0x1411fc0, "container") contentItem QQuickItem_QML_26(0x1411fc0, "container")

【讨论】:

谢谢!如果我想从MouseArea 引用GroupBox,我应该只使用GroupBoxs id,应该吗? 是的,id 不是父属性。

以上是关于GroupBox 中 MouseArea 的父级的主要内容,如果未能解决你的问题,请参考以下文章

QWidget 失去了它的父级

如何找到最近的 Git 分支的父级

如何找到最近的 Git 分支的父级

树节点森林C ++?

在模板中访问内联表单集的父级?

SpringBoot的pom.xml文件的父级.pom文件