2014-02-14 3 views
1

나는이 간단한 qml 응용 프로그램을 가지고 있으며 클릭 할 때 배경색을 출력해야합니다. 실제로는 여전히 undefined을 출력합니다.Qt - 간단한 QML 응용 프로그램이 작동하지 않습니다.

import QtQuick 2.1 
import QtQuick.Controls 1.0 

ApplicationWindow { 
    title: qsTr("Hello World") 
    width: 1400 
    height: 800 
    color: "#414141" 

    menuBar: MenuBar { 
     Menu { 
      title: qsTr("File") 
      MenuItem { 
       text: qsTr("Exit") 
       onTriggered: Qt.quit(); 
      } 
     } 
    } 

    MouseArea { 
     anchors.fill: parent 
     onClicked: {console.log(parent.color)} 
    } 
} 

답변

2

나는 확실하지 않다 이유를 정확하게하지만 ApplicationWindow 직접 MouseArea의 부모가되지 않는 것으로 보입니다. 당신은 내가 두 개의 다른 항목

MouseArea parent is: QQuickItem(0x101d369b0) 
root is: ApplicationWindow_QMLTYPE_7(0x101d35460) 

이 문제를 방지하려면 표시 출력이 얻을이

onClicked: { 
    console.log("MouseArea parent is: ", parent); 
    console.log("root is: ", root); 
} 

onClicked 이벤트를 변경 한 후 root처럼 ApplicationWindowid를 추가하고하여이를 확인할 수 있습니다 그냥 대신 console.log(root.color)을 사용하십시오 parent

+0

예, 출력이 다르지만, 실제로는 내가 id 값을 부모로 바꾼다면, 설정 새로운 색상은 효과가 없습니다 (nothings h appened after root.color = "# 414141") – Krab

+0

@ Krab> 업데이트를하거나 강제해야하는 Window를 "이동"하자마자 색상이 변하는 것을 알아 챘습니다. 버그를보고 할 수도 있습니다. 그 동안 부모 전체를 채우고 색상을 변경하는 'Rectangle'을 넣을 수 있습니까? – koopajah

+0

예 색상 변경 후 root.update() 추가하면 작동합니다. 이것이 버그인지 나는 모른다. 어쨌든 나는 그것을 불러야 만한다. – Krab

관련 문제