2014-02-14 38 views
1

我剛剛這個簡單的qml應用程序,它應該輸出背景顏色,當被點擊時。實際上它仍然輸出undefinedQt - 簡單的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的父。您可以通過添加idApplicationWindowroot,然後改變你的onClicked事件給這個

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

檢查這個我得到這個在其中顯示了兩種不同的項目

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

爲了避免這種情況的輸出,只是使用console.log(root.color)而不是使用parent

+0

是的,你是對的,輸出是不同的,但實際上現在如果我改變父值id值,然後設置新顏色沒有影響(nothings h appeed after root.color =「#414141」) – Krab

+0

@Krab>我注意到,只要「移動」必須強制更新的窗口,顏色就會改變。你可能想報告一個錯誤。在此期間,您可以放一個「矩形」填充整個父級並更改其顏色? – koopajah

+0

是的,現在如果我在顏色變化後添加root.update()。我不知道這是否是錯誤,也許我必須調用它,無論如何thx。 – Krab