Название: Каким образом отловить событие создания виджета. Отправлено: XandoX от Май 08, 2007, 07:39 Сабж, и еще есть ли такое событие, которое происходит сразу после создания виджета
Название: Каким образом отловить событие создания виджета. Отправлено: goer от Май 08, 2007, 10:03 Может можно реализовать через сигнал который будет испускаться в конструкторе класса?
Название: Каким образом отловить событие создания виджета. Отправлено: pastor от Май 08, 2007, 10:19 >Может можно реализовать через сигнал который будет испускаться в конструкторе класса?
имхо, метод сигналов-слотов не совсем корректен, так как объект ещё не доконца создан. Глянь QChildEvent, может он чем-то поможет Название: Каким образом отловить событие создания виджета. Отправлено: XandoX от Май 08, 2007, 10:33 нет я разабрался. окно виджета к моменту захода в конструктор уже создано, так что в конструкторе уже сразу можно юзать само окно и его хэндл, там все впорятке
Название: Каким образом отловить событие создания виджета. Отправлено: goer от Май 08, 2007, 11:17 Цитата: "pastor" имхо, метод сигналов-слотов не совсем корректен, так как объект ещё не доконца создан. На момент выполнения конструктора объекта-наследника от QObject, QObject-составлющая объекта уже создана, а следовательно и механизм сигналов-слотов уже должен работать. Название: Каким образом отловить событие создания виджета. Отправлено: Tonal от Май 08, 2007, 13:58 Цитата: "goer" Цитата: "pastor" имхо, метод сигналов-слотов не совсем корректен, так как объект ещё не доконца создан. На момент выполнения конструктора объекта-наследника от QObject, QObject-составлющая объекта уже создана, а следовательно и механизм сигналов-слотов уже должен работать. Ведь пока конструирование не закончилось, объект не виден извне... Разве что сам, в конструкторе парента на себя законектишь... Но тут, по моему, проще всё же евентом в него броситься. ;-) К тому же, что если объект ещё недоконструировался? Название: Каким образом отловить событие создания виджета. Отправлено: Kosh от Май 10, 2007, 10:11 Я вот над аналогичной проблемой раздумывала. Мысль пришла только такая:
Завести глобальный класс, что-то вроде ретранслятора. В конструкторе коннектишся к нему и посылаешь сигнал вроде такого objectCreated(void *адресНовогоОбъекта [, тип, если нужно и пр.]). Тот, кто хочет знать о моменте создания нового объекта уже законнектился к ретранслятору и ждет от него сигнала, аналогичного вышеописанному. Тлько вот насколько я разобралась в механизме сигналов и слотов, слот отработает в тот момент, когда конструктор еще не будет завершен. То есть, если объект создается my_obj = new MyObject(....); то переменная my_obj может быть еще не проинициализирована. здесь надо быть очень осторожным. Надо на эту тему с более гуристым товарищем посоветоватья, только у него еще праздник, и боюсь, продлится он до понедельника ))). Я попробовала, в моем случае такой вариант сработал. |