crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Как добавить отдельный UI(QFrame) во время работы программы?
RazrFalcon
  опции профиля:
сообщение 26.7.2011, 19:16
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Есть комбобокс, он имеет 4-е значения. В зависимости от того какое значение выбрал пользователь, должен грузится соответствующий QFrame с необходимыми элементами. Все QFrame в отдельных *.ui файлах. И я должен иметь возможность работать с этими элементами.
Как это реализовать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 26.7.2011, 23:31
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


Если я правильно понял суть проблемы то вам нужен класс QUiLoader
http://doc.qt.nokia.com/latest/quiloader.html
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 27.7.2011, 0:01
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Спасибо!
Не знаю на сколько это труЪ, но пашет именно так как мне надо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 27.7.2011, 9:20
Сообщение #4


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Ну грузится он грузится, а вот как получить доступ к элементам формы я не пойму =/
PS: в чем разница между: QUiLoader и QFormBuilder? Вроде одно и тоже.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 27.7.2011, 11:16
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


Для доступа к виджетам можно использовать findChild
Раскрывающийся текст




Взято из книги "Qt 4.5. Профессиональное программирование на c++" Макс Шлее

Цитата
в чем разница между: QUiLoader и QFormBuilder?

Цитата
The QFormBuilder class is typically used by custom components and applications that embed Qt Designer. Standalone applications that need to dynamically generate user interfaces at run-time use the QUiLoader class, found in the QtUiTools module.

Я так понял, если тащишь за собой Qt Designer, то лучше QFormBuilder если нет то лучше QUiLoader.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.7.2011, 13:53
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(RazrFalcon @ 27.7.2011, 12:20) *
а вот как получить доступ к элементам формы я не пойму
Смотри асистент, там есть пример
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
vankleef
  опции профиля:
сообщение 28.7.2011, 23:31
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 74
Регистрация: 21.10.2010
Пользователь №: 2134

Спасибо сказали: 9 раз(а)




Репутация:   1  


я вот не понимаю а почему нельзя отследить сигнал комбобокса и показать/создать/удалить форму, которую надо ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 29.7.2011, 0:50
Сообщение #8


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Litkevich Yuriy, нашел - пашет.
vankleef, не понял о чем Вы.

Проблема сейчас другая. Если я создал Qt Designer Form Class, могу ли я в нем прописать нужные мне действия. Я то гружу только сам UI.
То есть, я хочу что бы часть команд (нажатий на некоторые элементы), отрабатывалась в классе виджета.
То есть как будто обычное окно, нормальная реакция на сигналы и тд. Но сам виджет не отдельным окном, а внутри другого. Возможно ли это?

Или мне нужно через findChild найти все объекты виджета, и уже в основном классе программ обрабатывать их сигналы?

PS: Если уж совсем не ясно объяснил, могу выложить мини пример.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 29.7.2011, 5:44
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Часть работы можно сделать в самом дизайнере (т.е. соединить в нём сигналы и слоты), а то что должно взаимодействовать с внешним миром и просто некая логика внутри виджета, придётся делать в коде и за пределами динамически создаваемого (из ui-файла) виджета.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 29.7.2011, 9:49
Сообщение #10


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


То есть сам код слотов должен быть в основном коде, который и грузит форму?


PS: то что я пытаюсь сделать, вроде бы, называется "мастер". То есть у меня есть пустое окно с кнопками далее/назад. А все остальные элементы грузятся из внешних форм (*.ui). Возможно есть вариант лучше, чем я делаю сейчас.

Сообщение отредактировал RazrFalcon - 29.7.2011, 10:16
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.9.2019, 0:43