RazrFalcon
26.7.2011, 19:16
Есть комбобокс, он имеет 4-е значения. В зависимости от того какое значение выбрал пользователь, должен грузится соответствующий QFrame с необходимыми элементами. Все QFrame в отдельных *.ui файлах. И я должен иметь возможность работать с этими элементами.
Как это реализовать?
Если я правильно понял суть проблемы то вам нужен класс QUiLoader
http://doc.qt.nokia.com/latest/quiloader.html
RazrFalcon
27.7.2011, 0:01
Спасибо!
Не знаю на сколько это труЪ, но пашет именно так как мне надо.
RazrFalcon
27.7.2011, 9:20
Ну грузится он грузится, а вот как получить доступ к элементам формы я не пойму =/
PS: в чем разница между: QUiLoader и QFormBuilder? Вроде одно и тоже.
Для доступа к виджетам можно использовать 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
Цитата(RazrFalcon @ 27.7.2011, 12:20)
а вот как получить доступ к элементам формы я не пойму
Смотри асистент, там есть пример
vankleef
28.7.2011, 23:31
я вот не понимаю а почему нельзя отследить сигнал комбобокса и показать/создать/удалить форму, которую надо ?
RazrFalcon
29.7.2011, 0:50
Litkevich Yuriy, нашел - пашет.
vankleef, не понял о чем Вы.
Проблема сейчас другая. Если я создал Qt Designer Form Class, могу ли я в нем прописать нужные мне действия. Я то гружу только сам UI.
То есть, я хочу что бы часть команд (нажатий на некоторые элементы), отрабатывалась в классе виджета.
То есть как будто обычное окно, нормальная реакция на сигналы и тд. Но сам виджет не отдельным окном, а внутри другого. Возможно ли это?
Или мне нужно через findChild найти все объекты виджета, и уже в основном классе программ обрабатывать их сигналы?
PS: Если уж совсем не ясно объяснил, могу выложить мини пример.
Litkevich Yuriy
29.7.2011, 5:44
Часть работы можно сделать в самом дизайнере (т.е. соединить в нём сигналы и слоты), а то что должно взаимодействовать с внешним миром и просто некая логика внутри виджета, придётся делать в коде и за пределами динамически создаваемого (из ui-файла) виджета.
RazrFalcon
29.7.2011, 9:49
То есть сам код слотов должен быть в основном коде, который и грузит форму?
PS: то что я пытаюсь сделать, вроде бы, называется "мастер". То есть у меня есть пустое окно с кнопками далее/назад. А все остальные элементы грузятся из внешних форм (*.ui). Возможно есть вариант лучше, чем я делаю сейчас.
Litkevich Yuriy
29.7.2011, 11:12
Цитата(RazrFalcon @ 29.7.2011, 12:49)
То есть сам код слотов должен быть в основном коде, который и грузит форму?
не просто код слотов, а сами слоты и соединения их с сигналами от элементов формы
Цитата(RazrFalcon @ 29.7.2011, 12:49)
то что я пытаюсь сделать, вроде бы, называется "мастер"
А QWizard не подходит?
RazrFalcon
29.7.2011, 11:21
Ухты! Первый раз услышал о QWizard. Выглядит как обычный инсталер. Попробую и его. Скорее всего то что нужно.
Разве что, как я понял, он заточен только под инсталлер, а мне нужно совсем не инсталер. Как то так.
Litkevich Yuriy
29.7.2011, 11:32
я не знаю на основе чего ты понял, что он заточен под инсталлер. Это просто каркас для разработки мастеров/помошников.
почитай
в вики про него
RazrFalcon
29.7.2011, 17:40
Именно то что нужно, спасибо.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.