Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: stealth от Апрель 09, 2008, 09:40



Название: Как подменить QWidget на свой?
Отправлено: stealth от Апрель 09, 2008, 09:40
Здравствуйте!
В дизайнере создана формочка и есть элемент QWidget widget.
В программе нужно заменить этот widget на свой QWidget mywidget.
Подскажите как это сделать? ???


Название: Re: Как подменить QWidget на свой?
Отправлено: Dodge от Апрель 09, 2008, 10:55
Здравствуйте!
В дизайнере создана формочка и есть элемент QWidget widget.
В программе нужно заменить этот widget на свой QWidget mywidget.
Подскажите как это сделать? ???

разврат какойто :D...

поправте в генерируемом uic'ом файле код


Название: Re: Как подменить QWidget на свой?
Отправлено: Karl-Philipp от Апрель 09, 2008, 11:24
Здравствуйте!
В дизайнере создана формочка и есть элемент QWidget widget.
В программе нужно заменить этот widget на свой QWidget mywidget.
Подскажите как это сделать? ???

разврат какойто :D...

поправте в генерируемом uic'ом файле код

Dodge, возможно я ошибаюсь, но ведь не рекомендуют править в генерируемом uic'ом файле код ???


Название: Re: Как подменить QWidget на свой?
Отправлено: uku от Апрель 09, 2008, 12:24
Right Button Menu -> Promote To...

Разве не видели такого?


Название: Re: Как подменить QWidget на свой?
Отправлено: stealth от Апрель 09, 2008, 16:07
по идее можно реализовать так:
вставить QTabWidget
и потом уже использовать:
int QTabWidget::addTab ( QWidget * page, const QString & label )

но вот хотелось бы научиться заменять произвольный QWidget "на лету" :)

а с "Promote to" без header файлов получается никак? Просто делаю модуль на PyQT, а там этих заголовочников нет.


Название: Re: Как подменить QWidget на свой?
Отправлено: Bogdan от Апрель 10, 2008, 05:25
Я сделал это приблизительно так:

- в Дизайнере на Форму поклал в нужном месте QWidget Contaner
- там же создал набор отдельных виджетов, например, Form_1, Form_2 и т.п.
- дальше в коде
                         QWidget *form_ = new QWidget;
                         QVBoxLayout *vbox = new QVBoxLayout;
                         Contaner->setLayout(vbox);

- дальше по некоторому условию
                          if (T=1) {
                                       Form_1 *form_0 = new Form_1;
                                       form_=form_0;
                                      }
                          if (T=2) {
                                       Form_2 *form_0 = new Form_2;
                                       form_=form_0;
                                      }
                              .................

- после этого
                      form_->setParent(Contaner);
                      vbox->addWidget(form_);
                      Contaner->adjustSize();

                             ..........................

и т.д.

У меня работает так:
в зависимости от условия на Форму ложится соответствующий виджет и нормально выравнивается.
Я так понимаю ты этого хотел?


Название: Re: Как подменить QWidget на свой?
Отправлено: Alex03 от Апрель 10, 2008, 06:14
Я тоже делал через дополнительный QWidget в дизайнере, но ИМХО лишнее это.
Жалко что в 4.х.х, в отличии от 3.х.х, нельзя в дизайнере поименовать лэйаут.


Название: Re: Как подменить QWidget на свой?
Отправлено: stealth от Апрель 10, 2008, 09:19
Bogdan, спасибо за полное описание реализации! Да, это именно то, что нужно.


Название: Re: Как подменить QWidget на свой?
Отправлено: Dodge от Апрель 10, 2008, 17:35
Dodge, возможно я ошибаюсь, но ведь не рекомендуют править в генерируемом uic'ом файле код ???
это ежу понятно, но какая задача такое и решение... пардон

ИМФО если уж вы в дезайнере проектируете ui, то вы этот ui проектируете ТОЛЬКО в дезайнере... пишите плагины для дизайнера со своими виджетами, это совсем не сложно...

изобрести велосипед не проблема, просто все изобретают свой, соответственно одни умеют кататся на одних велосипедах, др на других... бардаг!