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. Вы можете проверить это, добавив id к вашему ApplicationWindow как root, а затем изменить свой 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 appened после root.color = "# 414141") – Krab

+0

@Krab> Я заметил, что цвет меняется, как только вы «перемещаете» окно, которое должно принудительно обновлять или что-то в этом роде. Возможно, вы захотите сообщить об ошибке. Тем временем вы можете поставить «Прямоугольник» на заполнение всего родителя и изменить его цвет? – koopajah

+0

Да, теперь это работает, если я добавлю root.update() после изменения цвета. Я не знаю, является ли это ошибкой, может быть, я должен ее назвать, THX. – Krab

Смежные вопросы