2016-11-04 8 views
1

Я новичок в Qt. Создаю QWizard и добавлю к нему QWizardPage. Теперь я хочу вернуться к предыдущей странице каким-то другим способом, кроме кнопки «Назад», например: какой-то синал или какая-то функция.Qt WizardPage назад с некоторой явной функцией

В деталях, я хочу работать немного Funtion в странице 2, показ MessageBox в нем и обеспечить ВЫБИРАЕМ, чтобы вернуться на страницу 1.

+0

http://doc.qt.io/qt-5/qwizard.html#back? – Hayt

+0

Большое вам спасибо. И знаете ли вы, как перейти на указанную страницу (например: стр. 5) –

ответ

1

QWizard имеет слот для back (также next и restart если необходимо)

Вы можете вызвать слот вручную, как вызов функции

wizard->back(); 

или подключить его к пользовательскому сигналу

connect(someClass,&class::mysignal,wizard,&QWizard::back); 

Если вы хотите более сложное поведение, может быть, вы должны смотреть в создании non-linear wizard

Qt имеет руководство о том, как сделать это в целом.

В основном речь идет о переопределении QWizard::nextId(), и когда волшебник хочет выяснить, куда перейти, эта функция будет вызываться.


Вы не можете перейти непосредственно на определенную страницу. Вы должны позвонить back/next/restart

Это может быть workarounded этим, хотя:

while(wizard->currentId() != <desiredID>) 
{ 
    wizard->back(); 
} 

Имейте в виду, что, хотя вы не получите в бесконечные циклы, если вы уже до страницы. Перейти к странице 1 restart будет лучшим вариантом. Как уже упоминалось, нелинейный мастер.

+0

Я пытаюсь вызвать wizard-> back() на моей странице мастера, мастер - это точка мастера, к которой он добавлен. Но это не сработает. 'void NiuFPage :: on_pushButton_clicked() { parentwizardpoint-> back(); } ' –

+0

Теперь все в порядке. Я подключаю неправильную функцию к нажатому сигналу раньше. Большое вам спасибо за подробную информацию –