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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как подменить QWidget на свой?  (Прочитано 5229 раз)
stealth
Гость
« : Апрель 09, 2008, 09:40 »

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

Здравствуйте!
В дизайнере создана формочка и есть элемент QWidget widget.
В программе нужно заменить этот widget на свой QWidget mywidget.
Подскажите как это сделать? Непонимающий

разврат какойто Веселый...

поправте в генерируемом uic'ом файле код
Записан
Karl-Philipp
Гость
« Ответ #2 : Апрель 09, 2008, 11:24 »

Здравствуйте!
В дизайнере создана формочка и есть элемент QWidget widget.
В программе нужно заменить этот widget на свой QWidget mywidget.
Подскажите как это сделать? Непонимающий

разврат какойто Веселый...

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

Dodge, возможно я ошибаюсь, но ведь не рекомендуют править в генерируемом uic'ом файле код Непонимающий
Записан
uku
Гость
« Ответ #3 : Апрель 09, 2008, 12:24 »

Right Button Menu -> Promote To...

Разве не видели такого?
Записан
stealth
Гость
« Ответ #4 : Апрель 09, 2008, 16:07 »

по идее можно реализовать так:
вставить QTabWidget
и потом уже использовать:
int QTabWidget::addTab ( QWidget * page, const QString & label )

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

а с "Promote to" без header файлов получается никак? Просто делаю модуль на PyQT, а там этих заголовочников нет.
Записан
Bogdan
Гость
« Ответ #5 : Апрель 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();

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

и т.д.

У меня работает так:
в зависимости от условия на Форму ложится соответствующий виджет и нормально выравнивается.
Я так понимаю ты этого хотел?
« Последнее редактирование: Апрель 10, 2008, 05:28 от Bogdan » Записан
Alex03
Гость
« Ответ #6 : Апрель 10, 2008, 06:14 »

Я тоже делал через дополнительный QWidget в дизайнере, но ИМХО лишнее это.
Жалко что в 4.х.х, в отличии от 3.х.х, нельзя в дизайнере поименовать лэйаут.
Записан
stealth
Гость
« Ответ #7 : Апрель 10, 2008, 09:19 »

Bogdan, спасибо за полное описание реализации! Да, это именно то, что нужно.
Записан
Dodge
Гость
« Ответ #8 : Апрель 10, 2008, 17:35 »

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

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

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


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