| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Как отловить момент добавления виджета? |
| Автор: sergey_85 18.2.2010, 10:32 |
| Всем привет! Qt4 У меня есть виджет, он является контейнером! Мне нужно ловить момент добавления на него дочерних контролов и если они наследованы от определенного класса (например BmsCWidget), то делать им иниц. вызовом метода BmsCWidget::setupControl(...); Есть ли такое событие? еще один момент: мне нужно событие когда контролу присваивается родитель. то есть когда вызывается control->setParent(); Обясню зачем: У меня есть дизайнер контролов на него из панели элементов юзер кидает разные контролы, среди них есть как обычные(кнопки фреймы, табы) так и специалыные переопределенные (наследники BmsCWidget), которые должны быть настроены по родителю, наследованному от BmsCWidget, а если его нет, то по главному виждету. |
| Автор: JackYF 18.2.2010, 11:03 |
| sergey_85, Вы забыли указать тулкит |
| Автор: sergey_85 18.2.2010, 11:08 |
| поправил |
| Автор: borisbn 18.2.2010, 11:57 |
| Мне кажется, что эти два события и есть одно и то же. Если так, то достаточно переопределить setParent() у наследников BmsCWidget и делать свои чёрные дела |
| Автор: sergey_85 18.2.2010, 13:13 |
| void setParent ( QObject * parent ) is public not virtual |
| Автор: borisbn 18.2.2010, 14:27 |
| Да, действительно, не вариант. Можно в функции YourWindow::event() [virtual protected] проверять если event->type() == QEvent::ChildAdded, то ... и т.д. |
| Автор: sergey_85 18.2.2010, 23:20 | ||
да можно и так еще накопал одно
но вот беда она не вызывается если контрол был кинут на форму или создан там динамически! (нет вызова события при первом присвоении родителя) |