Название: Как узнать что qml-элемент уже создался Отправлено: Sasha от Апрель 09, 2012, 16:55 Здравтвуйте,
Есть класс: Код: class CMyItem : public QDeclarativeItem Код: qmlRegisterType<CMyItem>("MyItems", 1, 0, "MyItem"); Код: import MyItems 1.0 Как в QtC++ коде узнать, что создан объект класса CMyItem? Точнее, как это узнать в тот момент, когда он создан. Ну т.е. что-то типа уведомления onCreate. Название: Re: Как узнать что qml-элемент уже создался Отправлено: mutineer от Апрель 09, 2012, 16:56 я в свое время искал, но не нашел такого. И тут тоже тогда никто не знал
Название: Re: Как узнать что qml-элемент уже создался Отправлено: ecspertiza от Апрель 09, 2012, 16:58 Ну так в голову пришло, в конструкторе CMyItem сигнал сэмитить например:)
Название: Re: Как узнать что qml-элемент уже создался Отправлено: mutineer от Апрель 09, 2012, 16:59 Ну так в голову пришло, в конструкторе CMyItem сигнал сэмитить например:) дело в том, что конструктор это еще не создание объекта. после конструктора еще пропертям начальные значения выставляются Название: Re: Как узнать что qml-элемент уже создался Отправлено: Sasha от Апрель 09, 2012, 17:07 Кажется нашёл.
Нужно переопределить Код: virtual void componentComplete() Название: Re: Как узнать что qml-элемент уже создался Отправлено: mutineer от Апрель 09, 2012, 17:08 Кажется нашёл. Нужно переопределить Код: virtual void componentComplete() и он выполнится после сета всех пропертей? Название: Re: Как узнать что qml-элемент уже создался Отправлено: Sasha от Апрель 09, 2012, 17:11 и он выполнится после сета всех пропертей? Да, только что проверил, подставив в эту ф-ю вывод свойств при помощи QMessageBox::information(...)Название: Re: Как узнать что qml-элемент уже создался Отправлено: mutineer от Апрель 09, 2012, 17:12 и он выполнится после сета всех пропертей? Да, только что проверил, подставив в эту ф-ю вывод свойств при помощи QMessageBox::information(...)Класс, спасибо:) А, блин, мне не подойдет - у меня наследник QObject, а не QDeclarativeItem... Название: Re: Как узнать что qml-элемент уже создался Отправлено: Sasha от Апрель 09, 2012, 17:27 А, блин, мне не подойдет - у меня наследник QObject, а не QDeclarativeItem... ф-я virtual void componentComplete() изначально определена в QDeclarativeParserStatus, которого наследует QDeclarativeItem, так что, возможно ты можешь его просто снаследовать дополнительно к QObject Кстати, только что проверил снаследовавшись от QObject и QDeclarativeParserStatus. Тоже получилось Название: Re: Как узнать что qml-элемент уже создался Отправлено: IGHOR от Апрель 29, 2012, 16:48 а если по сигналу Component.onCompleted: флаг "создался" менять или сигнал парента инициализировать?
|