Russian Qt Forum
Ноябрь 01, 2024, 18:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Component signals & status  (Прочитано 4352 раз)
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)


}
Записан
mutineer
Гость
« Ответ #1 : Июль 03, 2012, 10:24 »

Вообще говоря Rectangle не есть Component
Записан
OKTA
Гость
« Ответ #2 : Июль 03, 2012, 10:35 »

Но как тогда Component.onCompleted у него присутствует?
Записан
mutineer
Гость
« Ответ #3 : Июль 03, 2012, 10:37 »

Component.onCompleted можно применять к любому элементу, а вот status у Rectangle вряд ли будет
Записан
OKTA
Гость
« Ответ #4 : Июль 03, 2012, 10:49 »

Как же тогда узнать, когда qml-окружение загрузилось полностью? Ведь сигналы Component.onCompleted вызываются не снизу вверх, а сверху вниз  В замешательстве
Записан
OKTA
Гость
« Ответ #5 : Июль 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
Записан
OKTA
Гость
« Ответ #6 : Июль 03, 2012, 14:13 »

Но все равно не очень понятно =(
Записан
mutineer
Гость
« Ответ #7 : Июль 03, 2012, 14:14 »

Хз как узнать что все полностью загрузилось. Может ты расскажешь что ты сделать хочешь? Вдруг можно без onCompleted обойтись
Записан
OKTA
Гость
« Ответ #8 : Июль 03, 2012, 15:22 »

Мне нужно было делать QDEclarativeView::show() как только весь qml загрузится - привязал сигнал к первому же дочернему элементу главного   файла - все заработало как надо =) я всеми способами проверял и последним сигнал испускает именно первый дочерний элемент главного файла (всмысле корневого))) Просто если много всего барахла в qml - бывает открывает окно, а картинки уже постепенно подгружает - не тру)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.098 секунд. Запросов: 21.