2015-05-07 3 views
0

Я нашел this, но это только о проекте на основе QWidget. Как насчет ApplicationWindow компонентов в QML?Есть ли какой-либо QML-окно UI полностью сконструированный сигнал?

+0

Вы попробовали 'Component.onCompleted'? – ixSci

+0

@ixSci да, для компонента 'ApplicationWindow' и для его детей. Но он вызывается до загрузки всего пользовательского интерфейса. – VALOD9

+0

У вас есть динамически загруженные элементы в пользовательском интерфейсе? – cmannett85

ответ

1

Наконец-то я подключился к frameSwapped сигналу главного верхнего уровня QQuickWindow моей заявки. Он называется сразу после каждой перекраски. Итак, после первой перерисовки мой слот будет вызван, и я начну действительно загружать данные (что довольно медленно). Внутри этого слота я уничтожаю это соединение, поэтому я не замедляю приложение.

//main.cpp 
QQuickWindow* mainWindow = 
    qobject_cast<QQuickWindow*>(engine.rootObjects().first()); 
QMetaObject::Connection loadingFinished = 
    QObject::connect(mainWindow, SIGNAL(frameSwapped()), 
        &controller, SLOT(construct())); 
controller.setConnection(loadingFinished); 

//Controller.cpp 
void Controller::construct() // this is slot 
{ 
    // some really long operation 
    disconnect(*m_loadingFinished); 
} 

Надеюсь, что это будет полезно для кого-то.

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