2016-09-02 5 views
0

В этом QML код:Invalid сгруппированных доступ к свойству

Component {  
    id: userdelegate 
    PictureBox { 
    ... 
    icon: model.icon 
    icon.heigth: 50 
    } 
} 

PictureBox происходит от PictureBox.qml системного файла таким образом:

... 
Image { 
    id: icon 
    ... 
    width: parent.width; height: 150 
} 

Запуск QML, у меня есть ошибка в названии. Мне нужно использовать PictureBox.qml, но я не могу его изменить. Как изменить значение высоты по умолчанию для значка PictureBox.qml?

+0

Я думаю, что единственный способ использования [aliases] (http://doc.qt.io/qt-5/qtqml-syntax-objectattributes.html#property-attributes). Но вы сказали, что не можете изменить PictureBox.qml: -O – Tarod

+0

Я не вижу свойство 'icon' в любом месте этого кода (« PictureBox.qml' »). Можете ли вы опубликовать код, который действительно имеет отношение к вопросу? – Mitch

+0

@Mitch: значок - это идентификатор элемента изображения. – cloc3

ответ

0

Вы можете попытаться обойти правила охвата QML, пройдя по элементам Item до тех пор, пока не сможете найти изображение и управлять им напрямую. Вполне возможно, что может сломаться в будущем, но item.toString() дает вам что-то полезное:

item.toString() -> "QQuickImage(0x114054350)" 

Таким образом, вы можете попробовать что-то вроде этого (не проверено):

function findItemOfType(type, item) { 
    if (item.toString().indexOf(type) != -1) { 
     return child; 
    } 
    for (var i=0;i < children.length;++i) { 
     var child = children[i]; 
     var result = findItemOfType(type, child.children); 
     if (result != null) { 
      return result; 
     } 
    } 
    return null; 
} 

Используя это следующим образом:

findItemOfType("QQuickImage", pictureBoxId); 
Смежные вопросы