Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: sobr_vamp от Июня 04, 2011, 22:25



Название: QWizardPage забрать данные с соседней страницы
Отправлено: sobr_vamp от Июня 04, 2011, 22:25
Доброго времени суток.
Есть 6 своих классов, которые наследую от QWizardPage и потом пихаю в QWizard.
Нужно:
1. При переходе на следующую страницу (разобрался, что надо отлавливать validatePage() ) забирать данные, которые описаны в классе предыдущей страницы и помещать на следующую.
Вопрос конкретнее: как вызвать метод, который описан в классе предыдущей страницы?
2. Тоже забирать данные, только уже с виджетов формы. Опять же упирается в вызов функции

Я так понял ковырять надо QWizardPage * QWizard::page ( int id ) const. Только вот возвращает она совсем не то, что мне нужно. Не смог по этому указателю ничего вызвать(

Спасибо тем, кто сможет помочь =)


Название: Re: QWizardPage забрать данные с соседней страницы
Отправлено: Авварон от Июня 04, 2011, 22:37
Код:
MyPage *myPage= qobject_cast<MyPage*>(wizard->page(id));
Q_ASSERT(myPage);
if (myPage) {
    //тут твой код
}


Название: Re: QWizardPage забрать данные с соседней страницы
Отправлено: sobr_vamp от Июня 04, 2011, 22:48
Ооо! Спасибо, добрый человек! Всё отлично работает))


Название: Re: QWizardPage забрать данные с соседней страницы
Отправлено: Авварон от Июня 04, 2011, 23:10
Можно конечно использовать static_cast, но кьюобжект каст вкупе с ассертом (особенно Q_ASSERT_X, к-ый позволяет задать свое сообщение) ИЛИ if'ом позволяют быстро ловить ошибки в случае смены порядка/типа страниц.
В случае со статик кастом упадет либо при касте, либо при 1м вызове (что рандом и плохо), в случае с ассертом мы увидим сообщение, к-ое сразу говорит что где упало (то есть уже предсказуемое поведение), в случае с ифом вообще не упадет. В else кстати я бы писал сообщение что "бида бида"