Russian Qt Forum
Февраля 19, 2025, 01:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как подменить QWidget на свой?  (Прочитано 5315 раз)
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.145 секунд. Запросов: 21.