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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: как родительский виджет может узнать о появлении дочерних.  (Прочитано 3649 раз)
baka
Гость
« : Декабрь 18, 2007, 08:31 »

как родительский виджет может узнать о появлении дочерних сразу после их появления.

т.е. new MyClass(this);
где this указывает на eMClientForm
должен вызываться к.либо метод eMBaseForm
он посмотрит что за обьект добавлен на форму и в определенном случае произведет определенные манипуляции.

т.е. у меня есть диалоговое окно
class eMBaseForm : public QDialog
и
class eMClientForm : public eMBaseForm

в конструкторе eMClientForm я набрасываю компонентов
типа :
(class eMMyFieldEditor : public QWidget, public eMAbstractFieldEditor; )
и хочу чтобы при добавлении каждого вызывался некий метод определенный в eMBaseForm

извините что так путанно

т.е.
у меня сейчас конструктор формы вот такой
Код:
eMForeignIDFieldEditor * fid_group = new eMForeignIDFieldEditor(tr("Группа"),"group_client","group_id",this);
eMForeignIDFieldEditor * fid_surname = new eMForeignIDFieldEditor(tr("Фамилия"),"surname","surname_id",this);
eMForeignIDFieldEditor * fid_name = new eMForeignIDFieldEditor(tr("Имя"),"name","name_id",this);
eMForeignIDFieldEditor * fid_patronymic = new eMForeignIDFieldEditor(tr("Отчество"),"patronymic","patronymic_id",this);
eMForeignIDFieldEditor * fid_family_status = new eMForeignIDFieldEditor(tr("Семейное положение"),"family_status","family_status_id",this);

eMTextFieldEditor * tfe_phone = new eMTextFieldEditor(tr("Телефон"),"phone",this);
eMTextFieldEditor * tfe_phone_home = new eMTextFieldEditor(tr("Домашний телефон"),"phone_home",this);
eMTextFieldEditor * tfe_email = new eMTextFieldEditor(tr("email "),"email",this);
eMTextFieldEditor * tfe_work = new eMTextFieldEditor(tr("Место работы"),"work",this);
eMTextFieldEditor * tfe_post = new eMTextFieldEditor(tr("Должность"),"post",this);

eMTextFieldEditor * tfe_address_text = new eMTextFieldEditor(tr("Адрес"),"address_text",this);

component_vector.append(lc);
component_vector.append(fid_group);
component_vector.append(fid_surname);
component_vector.append(fid_name);
component_vector.append(fid_patronymic);
component_vector.append(fid_family_status);
component_vector.append(tfe_phone);
component_vector.append(tfe_phone_home);
component_vector.append(tfe_email);
component_vector.append(tfe_work);
component_vector.append(tfe_post);
component_vector.append(tfe_address_text);


QVBoxLayout * main = new QVBoxLayout(this);
main->addWidget(fid_group);
main->addWidget(fid_surname);
main->addWidget(fid_name);
main->addWidget(fid_patronymic);
main->addWidget(tfe_phone);
main->addWidget(tfe_phone_home);
main->addWidget(tfe_email);
main->addWidget(tfe_work);
main->addWidget(tfe_post);
main->addWidget(fid_family_status);
main->addWidget(lc);
main->addWidget(tfe_address_text);

я хочу чтобы тело конструктора выглядело бы так :

Код:
	QVBoxLayout * main = new QVBoxLayout(this);
main->addWidget(new eMForeignIDFieldEditor(tr("Группа"),"group_client","group_id",this);
main->addWidget( new eMForeignIDFieldEditor(tr("Фамилия"),"surname","surname_id",this);
main->addWidget(new eMForeignIDFieldEditor(tr("Имя"),"name","name_id",this);
main->addWidget(new eMForeignIDFieldEditor(tr("Отчество"),"patronymic","patronymic_id",this);
main->addWidget(new eMForeignIDFieldEditor(tr("Семейное положение"),"family_status","family_status_id",this);
main->addWidget(new eMTextFieldEditor(tr("Телефон"),"phone",this);
main->addWidget(new eMTextFieldEditor(tr("Домашний телефон"),"phone_home",this);
main->addWidget(new eMTextFieldEditor(tr("email "),"email",this);
main->addWidget(new eMTextFieldEditor(tr("Место работы"),"work",this);
main->addWidget(new eMTextFieldEditor(tr("Должность"),"post",this);
main->addWidget(new eMTextFieldEditor(tr("Адрес"),"address_text",this);

как этого добится Непонимающий
« Последнее редактирование: Декабрь 18, 2007, 08:39 от baka » Записан
Sergeich
Гость
« Ответ #1 : Декабрь 18, 2007, 11:20 »

http://doc.trolltech.com/4.3/qchildevent.html
Записан
baka
Гость
« Ответ #2 : Декабрь 18, 2007, 13:58 »

спасибо.
я сам не догадался в сторону event'ов глянуть.
Записан
ритт
Гость
« Ответ #3 : Декабрь 18, 2007, 18:33 »

буквально часа три назад делал скрытие детей лэйоута через отлов чайлдивент::адд() Улыбающийся
сергеич опередил Улыбающийся

бака, почему такой код страшный? Улыбающийся
сделай листвиджет или мап<стринг, виджет>, что ли?
« Последнее редактирование: Декабрь 18, 2007, 18:35 от xep » Записан
baka
Гость
« Ответ #4 : Декабрь 19, 2007, 05:49 »

пределал на QList<eMAbstractFieldEditor*> ;
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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