2014-09-29 7 views
5

przetestować prosty QML (Qt SDK w wersji 5.3.2) programu jak tenQML zakotwicza się ApplicationWindow poprzez id nie działa

import QtQuick 2.3 
import QtQuick.Controls 1.2 

ApplicationWindow { 
    visible: true 
    width: 640 
    height: 480 
    title: qsTr("Hello World") 
    id: appWin 

    Text { 
     text: qsTr("Hello World") 
     anchors.bottom: parent.bottom 
    } 
} 

chcę tekst zostanie rozplanowane na dole okna aplikacji, to praca . Ale jeśli zmienię anchors.bottom: parent.bottom na anchors.bottom: appWin.bottom (przez id), kotwice już nie działają, czy to błąd?

Odpowiedz

7

ApplicationWindow ostatecznie nie pochodzi z Item, więc nie ma właściwości anchors, dlatego używanie okna id nie działa. Dlaczego więc używasz parent? Ponieważ dzieci definiowane w ApplicationWindow stać children of an intermediateItem nazwie contentItem:

Jeśli przypiszesz element do listy danych, staje się dzieckiem tło Windows contentItem, tak że wydaje się wewnątrz okna. Element nadrzędny elementu będzie obiektem contentItem, który jest katalogiem głównym drzewa pozycji w tym oknie. ... Zazwyczaj nie jest konieczne uzyskanie odwołania do właściwości data, ponieważ jest to domyślna właściwość dla okna, a zatem wszystkie elementy podrzędne są automatycznie przypisywane do tej właściwości .

+0

dzięki, to prawda. – secmask

-2

To wygląda jak błąd, ale może to być zgodne z projektem według następujących docs:

ze względu na wydajność, można tylko zakotwiczyć element do jego rodzeństwa i bezpośredniego rodzica

Nadszedł nie bardzo jasne, jak możemy określić direct parent podczas kotwiczenia. Tłumacz QML może akceptować tylko parent, aby odwoływać się do elementu nadrzędnego qml.

+0

To nie jest błąd, a można określić bezpośredni rodzic przez jego "id" lub używając 'rodzica'. – cmannett85