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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Каким образом отловить событие создания виджета.  (Прочитано 4629 раз)
XandoX
Гость
« : Май 08, 2007, 07:39 »

Сабж, и еще есть ли такое событие, которое происходит сразу после создания виджета
Записан
goer
Гость
« Ответ #1 : Май 08, 2007, 10:03 »

Может можно реализовать через сигнал который будет испускаться в конструкторе класса?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #2 : Май 08, 2007, 10:19 »

>Может можно реализовать через сигнал который будет испускаться в конструкторе класса?

имхо, метод сигналов-слотов не совсем корректен, так как объект ещё не доконца создан. Глянь QChildEvent, может он чем-то поможет
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
XandoX
Гость
« Ответ #3 : Май 08, 2007, 10:33 »

нет я разабрался. окно виджета к моменту захода в конструктор уже создано, так что в конструкторе уже сразу можно юзать само окно и его хэндл, там все впорятке
Записан
goer
Гость
« Ответ #4 : Май 08, 2007, 11:17 »

Цитата: "pastor"
имхо, метод сигналов-слотов не совсем корректен, так как объект ещё не доконца создан.


На момент выполнения конструктора объекта-наследника от QObject, QObject-составлющая объекта уже создана, а следовательно и механизм сигналов-слотов уже должен работать.
Записан
Tonal
Гость
« Ответ #5 : Май 08, 2007, 13:58 »

Цитата: "goer"
Цитата: "pastor"
имхо, метод сигналов-слотов не совсем корректен, так как объект ещё не доконца создан.


На момент выполнения конструктора объекта-наследника от QObject, QObject-составлющая объекта уже создана, а следовательно и механизм сигналов-слотов уже должен работать.
Сигнал-то ты послать сможешь, а вот кто его получит?
Ведь пока конструирование не закончилось, объект не виден извне...
Разве что сам, в конструкторе парента на себя законектишь... Но тут, по моему, проще всё же евентом в него броситься. ;-)
К тому же, что если объект ещё недоконструировался?
Записан
Kosh
Гость
« Ответ #6 : Май 10, 2007, 10:11 »

Я вот над аналогичной проблемой раздумывала. Мысль пришла только такая:
Завести глобальный класс, что-то вроде ретранслятора.
В конструкторе коннектишся к нему и посылаешь сигнал вроде такого objectCreated(void *адресНовогоОбъекта [, тип, если нужно и пр.]).
Тот, кто хочет знать о моменте создания нового объекта уже законнектился к ретранслятору и ждет от него сигнала, аналогичного вышеописанному.
Тлько вот насколько я разобралась в механизме сигналов и слотов, слот отработает в тот момент, когда конструктор еще не будет завершен. То есть, если объект создается

my_obj = new MyObject(....);

то переменная my_obj может быть еще не проинициализирована. здесь надо быть очень осторожным. Надо на эту тему с более гуристым товарищем посоветоватья, только у него еще праздник, и боюсь, продлится он до понедельника ))).


Я попробовала, в моем случае такой вариант сработал.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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