|
|
Home | All Classes | Main Classes | Annotated | Grouped Classes | Functions |
This example shows the usage of Qt's wizard class. A wizard should be used to help a user with complicated actions.
Header file:
/**************************************************************************** ** $Id: qt/wizard.h 3.3.8 edited Jan 11 14:37 $ ** ** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved. ** ** This file is part of an example program for Qt. This example ** program may be used, distributed and modified without limitation. ** *****************************************************************************/ #ifndef WIZARD_H #define WIZARD_H #include <qwizard.h> class QWidget; class QHBox; class QLineEdit; class QLabel; class Wizard : public QWizard { Q_OBJECT public: Wizard( QWidget *parent = 0, const char *name = 0 ); void showPage(QWidget* page); protected: void setupPage1(); void setupPage2(); void setupPage3(); QHBox *page1, *page2, *page3; QLineEdit *key, *firstName, *lastName, *address, *phone, *email; QLabel *lKey, *lFirstName, *lLastName, *lAddress, *lPhone, *lEmail; protected slots: void keyChanged( const QString & ); void dataChanged( const QString & ); }; #endif
Implementation:
/**************************************************************************** ** $Id: qt/wizard.cpp 3.3.8 edited Jan 11 14:37 $ ** ** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved. ** ** This file is part of an example program for Qt. This example ** program may be used, distributed and modified without limitation. ** *****************************************************************************/ #include "wizard.h" #include <qwidget.h> #include <qhbox.h> #include <qvbox.h> #include <qlabel.h> #include <qlineedit.h> #include <qpushbutton.h> #include <qvalidator.h> #include <qapplication.h> Wizard::Wizard( QWidget *parent, const char *name ) : QWizard( parent, name, TRUE ) { setupPage1(); setupPage2(); setupPage3(); key->setFocus(); } void Wizard::setupPage1() { page1 = new QHBox( this ); page1->setSpacing(8); QLabel *info = new QLabel( page1 ); info->setMargin( 11 ); info->setPalette( yellow ); info->setText( "Enter your personal\n" "key here.\n\n" "Your personal key\n" "consists of 4 digits" ); info->setMaximumWidth( info->sizeHint().width() ); QVBox *page = new QVBox( page1 ); QHBox *row1 = new QHBox( page ); (void)new QLabel( "Key:", row1 ); key = new QLineEdit( row1 ); key->setMaxLength( 4 ); key->setValidator( new QIntValidator( 1000, 9999, key ) ); connect( key, SIGNAL( textChanged( const QString & ) ), this, SLOT( keyChanged( const QString & ) ) ); addPage( page1, "Personal Key" ); setNextEnabled( page1, FALSE ); setHelpEnabled( page1, FALSE ); } void Wizard::setupPage2() { page2 = new QHBox( this ); page2->setSpacing(8); QLabel *info = new QLabel( page2 ); info->setMargin( 11 ); info->setPalette( yellow ); info->setText( "\n" "Enter your personal\n" "data here.\n\n" "The required fields are\n" "First Name, Last Name \n" "and E-Mail.\n" ); info->setMaximumWidth( info->sizeHint().width() ); QVBox *page = new QVBox( page2 ); QHBox *row1 = new QHBox( page ); QHBox *row2 = new QHBox( page ); QHBox *row3 = new QHBox( page ); QHBox *row4 = new QHBox( page ); QHBox *row5 = new QHBox( page ); QLabel *label1 = new QLabel( " First Name: ", row1 ); label1->setAlignment( Qt::AlignVCenter ); QLabel *label2 = new QLabel( " Last Name: ", row2 ); label2->setAlignment( Qt::AlignVCenter ); QLabel *label3 = new QLabel( " Address: ", row3 ); label3->setAlignment( Qt::AlignVCenter ); QLabel *label4 = new QLabel( " Phone Number: ", row4 ); label4->setAlignment( Qt::AlignVCenter ); QLabel *label5 = new QLabel( " E-Mail: ", row5 ); label5->setAlignment( Qt::AlignVCenter ); label1->setMinimumWidth( label4->sizeHint().width() ); label2->setMinimumWidth( label4->sizeHint().width() ); label3->setMinimumWidth( label4->sizeHint().width() ); label4->setMinimumWidth( label4->sizeHint().width() ); label5->setMinimumWidth( label4->sizeHint().width() ); firstName = new QLineEdit( row1 ); lastName = new QLineEdit( row2 ); address = new QLineEdit( row3 ); phone = new QLineEdit( row4 ); email = new QLineEdit( row5 ); connect( firstName, SIGNAL( textChanged( const QString & ) ), this, SLOT( dataChanged( const QString & ) ) ); connect( lastName, SIGNAL( textChanged( const QString & ) ), this, SLOT( dataChanged( const QString & ) ) ); connect( email, SIGNAL( textChanged( const QString & ) ), this, SLOT( dataChanged( const QString & ) ) ); addPage( page2, "Personal Data" ); setHelpEnabled( page2, FALSE ); } void Wizard::setupPage3() { page3 = new QHBox( this ); page3->setSpacing(8); QLabel *info = new QLabel( page3 ); info->setPalette( yellow ); info->setText( "\n" "Look here to see of\n" "the data you entered\n" "is correct. To confirm,\n" "press the [Finish] button\n" "else go back to correct\n" "mistakes." ); info->setMargin( 11 ); info->setAlignment( AlignTop|AlignLeft ); info->setMaximumWidth( info->sizeHint().width() ); QVBox *page = new QVBox( page3 ); QHBox *row1 = new QHBox( page ); QHBox *row2 = new QHBox( page ); QHBox *row3 = new QHBox( page ); QHBox *row4 = new QHBox( page ); QHBox *row5 = new QHBox( page ); QHBox *row6 = new QHBox( page ); QLabel *label1 = new QLabel( " Personal Key: ", row1 ); label1->setAlignment( Qt::AlignVCenter ); QLabel *label2 = new QLabel( " First Name: ", row2 ); label2->setAlignment( Qt::AlignVCenter ); QLabel *label3 = new QLabel( " Last Name: ", row3 ); label3->setAlignment( Qt::AlignVCenter ); QLabel *label4 = new QLabel( " Address: ", row4 ); label4->setAlignment( Qt::AlignVCenter ); QLabel *label5 = new QLabel( " Phone Number: ", row5 ); label5->setAlignment( Qt::AlignVCenter ); QLabel *label6 = new QLabel( " E-Mail: ", row6 ); label6->setAlignment( Qt::AlignVCenter ); label1->setMinimumWidth( label1->sizeHint().width() ); label2->setMinimumWidth( label1->sizeHint().width() ); label3->setMinimumWidth( label1->sizeHint().width() ); label4->setMinimumWidth( label1->sizeHint().width() ); label5->setMinimumWidth( label1->sizeHint().width() ); label6->setMinimumWidth( label1->sizeHint().width() ); lKey = new QLabel( row1 ); lFirstName = new QLabel( row2 ); lLastName = new QLabel( row3 ); lAddress = new QLabel( row4 ); lPhone = new QLabel( row5 ); lEmail = new QLabel( row6 ); addPage( page3, "Finish" ); setFinishEnabled( page3, TRUE ); setHelpEnabled( page3, FALSE ); } void Wizard::showPage( QWidget* page ) { if ( page == page1 ) { } else if ( page == page2 ) { } else if ( page == page3 ) { lKey->setText( key->text() ); lFirstName->setText( firstName->text() ); lLastName->setText( lastName->text() ); lAddress->setText( address->text() ); lPhone->setText( phone->text() ); lEmail->setText( email->text() ); } QWizard::showPage(page); if ( page == page1 ) { keyChanged( key->text() ); key->setFocus(); } else if ( page == page2 ) { dataChanged( firstName->text() ); firstName->setFocus(); } else if ( page == page3 ) { finishButton()->setEnabled( TRUE ); finishButton()->setFocus(); } } void Wizard::keyChanged( const QString &text ) { QString t = text; int p = 0; bool on = ( key->validator()->validate(t, p) == QValidator::Acceptable ); nextButton()->setEnabled( on ); } void Wizard::dataChanged( const QString & ) { if ( !firstName->text().isEmpty() && !lastName->text().isEmpty() && !email->text().isEmpty() ) nextButton()->setEnabled( TRUE ); else nextButton()->setEnabled( FALSE ); }
Main:
/**************************************************************************** ** $Id: qt/main.cpp 3.3.8 edited Jan 11 14:37 $ ** ** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved. ** ** This file is part of an example program for Qt. This example ** program may be used, distributed and modified without limitation. ** *****************************************************************************/ #include "wizard.h" #include <qapplication.h> int main(int argc,char **argv) { QApplication a(argc,argv); Wizard wizard; wizard.setCaption("Qt Example - Wizard"); return wizard.exec(); }
See also Examples.
Copyright © 2007 Trolltech | Trademarks | Qt 3.3.8
|