Russian Qt Forum

Qt => Qt Quick => Тема начата: OKTA от Июль 03, 2012, 09:47



Название: Component signals & status
Отправлено: OKTA от Июль 03, 2012, 09:47
Товарищи! Подскажите! Почему первая строчка работает, а вторая не работет? А Component.status только undefined Выдает?


Код:
import QtQuick 1.1

Rectangle {

    Component.onStatusChanged:console.log('Component status - ' + Component.status)

    Component.onCompleted: console.log('Component status - ' + Component.status)


}


Название: Re: Component signals & status
Отправлено: mutineer от Июль 03, 2012, 10:24
Вообще говоря Rectangle не есть Component


Название: Re: Component signals & status
Отправлено: OKTA от Июль 03, 2012, 10:35
Но как тогда Component.onCompleted у него присутствует?


Название: Re: Component signals & status
Отправлено: mutineer от Июль 03, 2012, 10:37
Component.onCompleted можно применять к любому элементу, а вот status у Rectangle вряд ли будет


Название: Re: Component signals & status
Отправлено: OKTA от Июль 03, 2012, 10:49
Как же тогда узнать, когда qml-окружение загрузилось полностью? Ведь сигналы Component.onCompleted вызываются не снизу вверх, а сверху вниз  :-\


Название: Re: Component signals & status
Отправлено: OKTA от Июль 03, 2012, 11:08
А нет, немного хитрее - вот попробовал код такой
Код:
import QtQuick 1.1

Rectangle {

   Component.onCompleted: console.log('Component completed 1')

    Rectangle {
        Component.onCompleted: console.log('Component completed 2')
    }
    Rectangle {
        Component.onCompleted: console.log('Component completed 3')
    }
    Rectangle {
        Component.onCompleted: console.log('Component completed 4')

        Rectangle {
            Component.onCompleted: console.log('Component completed 41')
            Rectangle {
                Component.onCompleted: console.log('Component completed 42')
                Rectangle {
                    Component.onCompleted: console.log('Component completed 43')
                    Rectangle {
                        Component.onCompleted: console.log('Component completed 44')
                    }
                }
            }

        }
    }
    Rectangle {
        Component.onCompleted: console.log('Component completed 5')

        Rectangle {
            Component.onCompleted: console.log('Component completed 51')
            Rectangle {
                Component.onCompleted: console.log('Component completed 52')
                Rectangle {
                    Component.onCompleted: console.log('Component completed 53')
                    Rectangle {
                        Component.onCompleted: console.log('Component completed 54')
                    }
                }
            }

        }

    }
}

Выдало следующее:
Код:
Component completed 1
Component completed 5
Component completed 51
Component completed 52
Component completed 53
Component completed 54
Component completed 4
Component completed 41
Component completed 42
Component completed 43
Component completed 44
Component completed 3
Component completed 2


Название: Re: Component signals & status
Отправлено: OKTA от Июль 03, 2012, 14:13
Но все равно не очень понятно =(


Название: Re: Component signals & status
Отправлено: mutineer от Июль 03, 2012, 14:14
Хз как узнать что все полностью загрузилось. Может ты расскажешь что ты сделать хочешь? Вдруг можно без onCompleted обойтись


Название: Re: Component signals & status
Отправлено: OKTA от Июль 03, 2012, 15:22
Мне нужно было делать QDEclarativeView::show() как только весь qml загрузится - привязал сигнал к первому же дочернему элементу главного   файла - все заработало как надо =) я всеми способами проверял и последним сигнал испускает именно первый дочерний элемент главного файла (всмысле корневого))) Просто если много всего барахла в qml - бывает открывает окно, а картинки уже постепенно подгружает - не тру)