Название: как родительский виджет может узнать о появлении дочерних.
Отправлено: 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);
как этого добится ???
Название: Re: как родительский виджет может узнать о появлении дочерних.
Отправлено: Sergeich от Декабрь 18, 2007, 11:20
http://doc.trolltech.com/4.3/qchildevent.html
Название: Re: как родительский виджет может узнать о появлении дочерних.
Отправлено: baka от Декабрь 18, 2007, 13:58
спасибо. я сам не догадался в сторону event'ов глянуть.
Название: Re: как родительский виджет может узнать о появлении дочерних.
Отправлено: ритт от Декабрь 18, 2007, 18:33
буквально часа три назад делал скрытие детей лэйоута через отлов чайлдивент::адд() :) сергеич опередил :)
бака, почему такой код страшный? :) сделай листвиджет или мап<стринг, виджет>, что ли?
Название: Re: как родительский виджет может узнать о появлении дочерних.
Отправлено: baka от Декабрь 19, 2007, 05:49
пределал на QList<eMAbstractFieldEditor*> ;
|