Название: Самодельный визард Отправлено: phpCoder от Январь 27, 2015, 09:54 Добрый день.
Делаю свой визард, возникли вопросы: 1. Пользователь ввел свои данные на какой-то странице. Далее на финальной странице я хочу вывести итог (summary) того, что он навводил. Как это сделать? Где в Qwizard сохраняются введенные значения (строки, чекбоксы, радио...)? 2. На первой странице пользователь ввел данные. Далее у меня должно быть соединение с БД, загрузка данных. В зависимости от загруженных данных должна вызываться определенная страница визарда (нелинейная модель). Как это делается? Смотрел пример qt, но там визард самодостаточен и из вне данные в него не поступают для принятия решения. Т.е. где реализовывать соединение с БД - на первой странице или на второй? Если на второй, то вдруг окажется, что вторую страницу пользователю не нужно выводить (исходя из данных БД). Получается нужно ее визуально пропустить и перейти к другой. Есть соображения по этому поводу? Название: Re: Самодельный визард Отправлено: Johnik от Январь 27, 2015, 10:12 1.
На разных страницах визарда регистрируем ресурсы: Код
зарегистрированные ресурсы использовать так: Код
2. для нелийненых визардов хорошо в документации написано: Creating Non-Linear Wizards (http://doc.qt.io/qt-5/qwizard.html#creating-non-linear-wizards) --- по визардам хороший пример: исходники QtCreator'а Название: Re: Самодельный визард Отправлено: phpCoder от Январь 27, 2015, 12:05 С первым пунктом ясно.
А с БД так и не ясно. В каком месте реализовывать подкачку данных из-вне? Это уже читал - написал в первом посте. Название: Re: Самодельный визард Отправлено: Johnik от Январь 27, 2015, 12:15 создаете наследника QWizard, внедряете какой-нибудь интерфейс по работе с данными (он же модель), на страницах работаете с данными через модель
MVC же! Название: Re: Самодельный визард Отправлено: phpCoder от Январь 27, 2015, 14:11 А пример можно, когда данные из вне подгружаются?
Название: Re: Самодельный визард Отправлено: Johnik от Январь 27, 2015, 14:49 wizard.h:
Код wizard.cpp: Код
wizardpage.h: Код
wizardpage1.h: Код
как-то так... или нужен пример того как с БД работать? Название: Re: Самодельный визард Отправлено: phpCoder от Январь 27, 2015, 19:22 Да нет, с БД работать ясно как.
Просто не понятно где именно, в какой момент нужно вытаскивать данные из вне? Пример: 1. На начальной странице я ввел число. 2. Далее в какой-то момент где-то (в моем методе или в qt-шном, переопределенном) вытаскивается информация из вне (с учетом введенного числа) и принимается решение - либо идем на следующую страницу, либо ее перепрыгиваем и идем сразу на третью. (+ еще то, что пришло из вне нужно записать в мета-поле.) Название: Re: Самодельный визард Отправлено: phpCoder от Январь 27, 2015, 19:56 Более того, если из БД придет ответ, что записей нет, то нужно остаться на текущей странице (ну что пользователь мог исправить введенные данные).
Название: Re: Самодельный визард Отправлено: Johnik от Январь 28, 2015, 08:11 принимается решение - либо идем на следующую страницу, либо ее перепрыгиваем и идем сразу на третью вы ходили по ссылке, что я давал? (Creating Non-Linear Wizards)там четко сказано, как это делать, в классах страниц визарда перегрузить метод: Код
Более того, если из БД придет ответ, что записей нет, то нужно остаться на текущей странице (ну что пользователь мог исправить введенные данные). Код
почитайте документацию всё-таки. Название: Re: Самодельный визард Отправлено: phpCoder от Январь 28, 2015, 09:39 вы ходили по ссылке, что я давал? (Creating Non-Linear Wizards) там четко сказано, как это делать, в классах страниц визарда перегрузить метод: Код
Более того, если из БД придет ответ, что записей нет, то нужно остаться на текущей странице (ну что пользователь мог исправить введенные данные). Код
почитайте документацию всё-таки. Да в какой момент скачивать данные из вне, елы палы, почитайте предыдущие посты всё-таки.В nextId не скачаешь данные, этот метод вызывается несколько раз при создании визарда и не сохранишь, т.к. конст. Чтобы он направлял куда, нужно СПЕРВА скачать данные! Повторяю, в документации НЕТ примеров со скачкой данных из вне. Все визарды в примерах САМОДОСТАТОЧНЫ. Название: Re: Самодельный визард Отправлено: Johnik от Январь 28, 2015, 09:51 елы палы, почитайте предыдущие посты всё-таки. вы сами почитайте предыдущие посты.я вам уже рекомендовал использовать принципы MVC пишете модель (не путать с ItemModel из Qt), настраиваете в диалоге визардов(представление) взаимодействие с моделью, при изменении данных в представлении подгружаете необходимые данные, и настраиваете флажки, а в константных методах используете эти флажки Название: Re: Самодельный визард Отправлено: phpCoder от Январь 28, 2015, 10:37 Какая-то модель... Почесать левой рукой правое ухо.
Пользователь ввел данные, нажал далее. Теперь нужно отловить это нажатие. В слоте для этого сигнала сделать запрос к БД, получить выборку, проверить ее на адекватность и установить нужный ИД следующей страницы (или оставить прежний). После этого уже пусть вызывается nextId() и прочая муть с ее неадекватной логикой. Я так понимаю, Вы много раз делали визарды. Поделитесь проектом? Название: Re: Самодельный визард Отправлено: Johnik от Январь 28, 2015, 11:14 Я так понимаю, Вы много раз делали визарды. Поделитесь проектом? Визардов сделал мало, но разбирался как происходит работа с ними. Изучал работу визардов по исходникам QtCreator. Много работаю с UI.Какая-то модель... Почесать левой рукой правое ухо. У меня вся логика разделена на модули, поэтому между модулями пуляю только интерфейсы моделей, даже простых, так проще.Пользователь ввел данные, нажал далее. Теперь нужно отловить это нажатие. В слоте для этого сигнала сделать запрос к БД, получить выборку, проверить ее на адекватность и установить нужный ИД следующей страницы (или оставить прежний). После этого уже пусть вызывается nextId() и прочая муть с ее неадекватной логикой. Да, примерно так.Название: Re: Самодельный визард Отправлено: phpCoder от Январь 28, 2015, 14:52 Как это сделать?
Мне посоветовали переопределить метод QWizardPage::validatePage, но проблема в том, что он никогда не вызывается. Все остальные вызываются, а этот нет. Не понятно почему. Тривиальный проект визарда прикрепил к сообщению. Название: Re: Самодельный визард Отправлено: Johnik от Январь 28, 2015, 15:01 бегло глянув ваш код:
должно быть: Код у вас в коде: Код
|