source: trunk/examples/wizard/wizard.cpp@ 127

Last change on this file since 127 was 2, checked in by dmik, 20 years ago

Imported xplatform parts of the official release 3.3.1 from Trolltech

  • Property svn:keywords set to Id
File size: 7.1 KB
Line 
1/****************************************************************************
2** $Id: wizard.cpp 2 2005-11-16 15:49:26Z dmik $
3**
4** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
5**
6** This file is part of an example program for Qt. This example
7** program may be used, distributed and modified without limitation.
8**
9*****************************************************************************/
10
11#include "wizard.h"
12
13#include <qwidget.h>
14#include <qhbox.h>
15#include <qvbox.h>
16#include <qlabel.h>
17#include <qlineedit.h>
18#include <qpushbutton.h>
19#include <qvalidator.h>
20#include <qapplication.h>
21
22Wizard::Wizard( QWidget *parent, const char *name )
23 : QWizard( parent, name, TRUE )
24{
25 setupPage1();
26 setupPage2();
27 setupPage3();
28
29 key->setFocus();
30}
31
32void Wizard::setupPage1()
33{
34 page1 = new QHBox( this );
35 page1->setSpacing(8);
36
37 QLabel *info = new QLabel( page1 );
38 info->setMargin( 11 );
39 info->setPalette( yellow );
40 info->setText( "Enter your personal\n"
41 "key here.\n\n"
42 "Your personal key\n"
43 "consists of 4 digits" );
44 info->setMaximumWidth( info->sizeHint().width() );
45
46 QVBox *page = new QVBox( page1 );
47
48 QHBox *row1 = new QHBox( page );
49
50 (void)new QLabel( "Key:", row1 );
51
52 key = new QLineEdit( row1 );
53 key->setMaxLength( 4 );
54 key->setValidator( new QIntValidator( 1000, 9999, key ) );
55
56 connect( key, SIGNAL( textChanged( const QString & ) ),
57 this, SLOT( keyChanged( const QString & ) ) );
58
59 addPage( page1, "Personal Key" );
60
61 setNextEnabled( page1, FALSE );
62 setHelpEnabled( page1, FALSE );
63}
64
65void Wizard::setupPage2()
66{
67 page2 = new QHBox( this );
68 page2->setSpacing(8);
69
70 QLabel *info = new QLabel( page2 );
71 info->setMargin( 11 );
72 info->setPalette( yellow );
73 info->setText( "\n"
74 "Enter your personal\n"
75 "data here.\n\n"
76 "The required fields are\n"
77 "First Name, Last Name \n"
78 "and E-Mail.\n" );
79 info->setMaximumWidth( info->sizeHint().width() );
80
81 QVBox *page = new QVBox( page2 );
82
83 QHBox *row1 = new QHBox( page );
84 QHBox *row2 = new QHBox( page );
85 QHBox *row3 = new QHBox( page );
86 QHBox *row4 = new QHBox( page );
87 QHBox *row5 = new QHBox( page );
88
89 QLabel *label1 = new QLabel( " First Name: ", row1 );
90 label1->setAlignment( Qt::AlignVCenter );
91 QLabel *label2 = new QLabel( " Last Name: ", row2 );
92 label2->setAlignment( Qt::AlignVCenter );
93 QLabel *label3 = new QLabel( " Address: ", row3 );
94 label3->setAlignment( Qt::AlignVCenter );
95 QLabel *label4 = new QLabel( " Phone Number: ", row4 );
96 label4->setAlignment( Qt::AlignVCenter );
97 QLabel *label5 = new QLabel( " E-Mail: ", row5 );
98 label5->setAlignment( Qt::AlignVCenter );
99
100 label1->setMinimumWidth( label4->sizeHint().width() );
101 label2->setMinimumWidth( label4->sizeHint().width() );
102 label3->setMinimumWidth( label4->sizeHint().width() );
103 label4->setMinimumWidth( label4->sizeHint().width() );
104 label5->setMinimumWidth( label4->sizeHint().width() );
105
106 firstName = new QLineEdit( row1 );
107 lastName = new QLineEdit( row2 );
108 address = new QLineEdit( row3 );
109 phone = new QLineEdit( row4 );
110 email = new QLineEdit( row5 );
111
112 connect( firstName, SIGNAL( textChanged( const QString & ) ),
113 this, SLOT( dataChanged( const QString & ) ) );
114 connect( lastName, SIGNAL( textChanged( const QString & ) ),
115 this, SLOT( dataChanged( const QString & ) ) );
116 connect( email, SIGNAL( textChanged( const QString & ) ),
117 this, SLOT( dataChanged( const QString & ) ) );
118
119 addPage( page2, "Personal Data" );
120
121 setHelpEnabled( page2, FALSE );
122}
123
124void Wizard::setupPage3()
125{
126 page3 = new QHBox( this );
127 page3->setSpacing(8);
128
129 QLabel *info = new QLabel( page3 );
130 info->setPalette( yellow );
131 info->setText( "\n"
132 "Look here to see of\n"
133 "the data you entered\n"
134 "is correct. To confirm,\n"
135 "press the [Finish] button\n"
136 "else go back to correct\n"
137 "mistakes." );
138 info->setMargin( 11 );
139 info->setAlignment( AlignTop|AlignLeft );
140 info->setMaximumWidth( info->sizeHint().width() );
141
142 QVBox *page = new QVBox( page3 );
143
144 QHBox *row1 = new QHBox( page );
145 QHBox *row2 = new QHBox( page );
146 QHBox *row3 = new QHBox( page );
147 QHBox *row4 = new QHBox( page );
148 QHBox *row5 = new QHBox( page );
149 QHBox *row6 = new QHBox( page );
150
151 QLabel *label1 = new QLabel( " Personal Key: ", row1 );
152 label1->setAlignment( Qt::AlignVCenter );
153 QLabel *label2 = new QLabel( " First Name: ", row2 );
154 label2->setAlignment( Qt::AlignVCenter );
155 QLabel *label3 = new QLabel( " Last Name: ", row3 );
156 label3->setAlignment( Qt::AlignVCenter );
157 QLabel *label4 = new QLabel( " Address: ", row4 );
158 label4->setAlignment( Qt::AlignVCenter );
159 QLabel *label5 = new QLabel( " Phone Number: ", row5 );
160 label5->setAlignment( Qt::AlignVCenter );
161 QLabel *label6 = new QLabel( " E-Mail: ", row6 );
162 label6->setAlignment( Qt::AlignVCenter );
163
164 label1->setMinimumWidth( label1->sizeHint().width() );
165 label2->setMinimumWidth( label1->sizeHint().width() );
166 label3->setMinimumWidth( label1->sizeHint().width() );
167 label4->setMinimumWidth( label1->sizeHint().width() );
168 label5->setMinimumWidth( label1->sizeHint().width() );
169 label6->setMinimumWidth( label1->sizeHint().width() );
170
171 lKey = new QLabel( row1 );
172 lFirstName = new QLabel( row2 );
173 lLastName = new QLabel( row3 );
174 lAddress = new QLabel( row4 );
175 lPhone = new QLabel( row5 );
176 lEmail = new QLabel( row6 );
177
178 addPage( page3, "Finish" );
179
180 setFinishEnabled( page3, TRUE );
181 setHelpEnabled( page3, FALSE );
182}
183
184void Wizard::showPage( QWidget* page )
185{
186 if ( page == page1 ) {
187 } else if ( page == page2 ) {
188 } else if ( page == page3 ) {
189 lKey->setText( key->text() );
190 lFirstName->setText( firstName->text() );
191 lLastName->setText( lastName->text() );
192 lAddress->setText( address->text() );
193 lPhone->setText( phone->text() );
194 lEmail->setText( email->text() );
195 }
196
197 QWizard::showPage(page);
198
199 if ( page == page1 ) {
200 keyChanged( key->text() );
201 key->setFocus();
202 } else if ( page == page2 ) {
203 dataChanged( firstName->text() );
204 firstName->setFocus();
205 } else if ( page == page3 ) {
206 finishButton()->setEnabled( TRUE );
207 finishButton()->setFocus();
208 }
209}
210
211void Wizard::keyChanged( const QString &text )
212{
213 QString t = text;
214 int p = 0;
215 bool on = ( key->validator()->validate(t, p) == QValidator::Acceptable );
216 nextButton()->setEnabled( on );
217}
218
219void Wizard::dataChanged( const QString & )
220{
221 if ( !firstName->text().isEmpty() &&
222 !lastName->text().isEmpty() &&
223 !email->text().isEmpty() )
224 nextButton()->setEnabled( TRUE );
225 else
226 nextButton()->setEnabled( FALSE );
227}
Note: See TracBrowser for help on using the repository browser.