source: trunk/doc/html/wizard-example.html

Last change on this file was 190, checked in by rudi, 14 years ago

reference documentation added

File size: 18.0 KB
Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2<!-- /home/espenr/tmp/qt-3.3.8-espenr-2499/qt-x11-free-3.3.8/examples/wizard/wizard.doc:4 -->
3<html>
4<head>
5<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
6<title>Wizard</title>
7<style type="text/css"><!--
8fn { margin-left: 1cm; text-indent: -1cm; }
9a:link { color: #004faf; text-decoration: none }
10a:visited { color: #672967; text-decoration: none }
11body { background: #ffffff; color: black; }
12--></style>
13</head>
14<body>
15
16<table border="0" cellpadding="0" cellspacing="0" width="100%">
17<tr bgcolor="#E5E5E5">
18<td valign=center>
19 <a href="index.html">
20<font color="#004faf">Home</font></a>
21 | <a href="classes.html">
22<font color="#004faf">All&nbsp;Classes</font></a>
23 | <a href="mainclasses.html">
24<font color="#004faf">Main&nbsp;Classes</font></a>
25 | <a href="annotated.html">
26<font color="#004faf">Annotated</font></a>
27 | <a href="groups.html">
28<font color="#004faf">Grouped&nbsp;Classes</font></a>
29 | <a href="functions.html">
30<font color="#004faf">Functions</font></a>
31</td>
32<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table><h1 align=center>Wizard</h1>
33
34
35<p>
36This example shows the usage of Qt's wizard class. A wizard
37should be used to help a user with complicated actions.
38<p> <hr>
39<p> Header file:
40<p> <pre>/****************************************************************************
41** $Id: wizard-example.html 2051 2007-02-21 10:04:20Z chehrlic $
42**
43** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.
44**
45** This file is part of an example program for Qt. This example
46** program may be used, distributed and modified without limitation.
47**
48*****************************************************************************/
49
50#ifndef WIZARD_H
51#define WIZARD_H
52
53#include &lt;<a href="qwizard-h.html">qwizard.h</a>&gt;
54
55class QWidget;
56class QHBox;
57class QLineEdit;
58class QLabel;
59
60class Wizard : public <a href="qwizard.html">QWizard</a>
61{
62 <a href="metaobjects.html#Q_OBJECT">Q_OBJECT</a>
63
64public:
65 Wizard( <a href="qwidget.html">QWidget</a> *parent = 0, const char *name = 0 );
66
67 void showPage(QWidget* page);
68
69protected:
70 void setupPage1();
71 void setupPage2();
72 void setupPage3();
73
74 <a href="qhbox.html">QHBox</a> *page1, *page2, *page3;
75 <a href="qlineedit.html">QLineEdit</a> *key, *firstName, *lastName, *address, *phone, *email;
76 <a href="qlabel.html">QLabel</a> *lKey, *lFirstName, *lLastName, *lAddress, *lPhone, *lEmail;
77
78protected slots:
79 void keyChanged( const <a href="qstring.html">QString</a> &amp; );
80 void dataChanged( const <a href="qstring.html">QString</a> &amp; );
81
82};
83
84#endif
85</pre>
86
87<p> <hr>
88<p> Implementation:
89<p> <pre>/****************************************************************************
90** $Id: wizard-example.html 2051 2007-02-21 10:04:20Z chehrlic $
91**
92** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.
93**
94** This file is part of an example program for Qt. This example
95** program may be used, distributed and modified without limitation.
96**
97*****************************************************************************/
98
99#include "wizard.h"
100
101#include &lt;<a href="qwidget-h.html">qwidget.h</a>&gt;
102#include &lt;<a href="qhbox-h.html">qhbox.h</a>&gt;
103#include &lt;<a href="qvbox-h.html">qvbox.h</a>&gt;
104#include &lt;<a href="qlabel-h.html">qlabel.h</a>&gt;
105#include &lt;<a href="qlineedit-h.html">qlineedit.h</a>&gt;
106#include &lt;<a href="qpushbutton-h.html">qpushbutton.h</a>&gt;
107#include &lt;<a href="qvalidator-h.html">qvalidator.h</a>&gt;
108#include &lt;<a href="qapplication-h.html">qapplication.h</a>&gt;
109
110<a name="f182"></a>Wizard::Wizard( <a href="qwidget.html">QWidget</a> *parent, const char *name )
111 : <a href="qwizard.html">QWizard</a>( parent, name, TRUE )
112{
113 setupPage1();
114 setupPage2();
115 setupPage3();
116
117<a name="x11"></a> key-&gt;<a href="qwidget.html#setFocus">setFocus</a>();
118}
119
120void <a name="f183"></a>Wizard::setupPage1()
121{
122 page1 = new <a href="qhbox.html">QHBox</a>( this );
123<a name="x2"></a> page1-&gt;<a href="qhbox.html#setSpacing">setSpacing</a>(8);
124
125 <a href="qlabel.html">QLabel</a> *info = new <a href="qlabel.html">QLabel</a>( page1 );
126<a name="x1"></a> info-&gt;<a href="qframe.html#setMargin">setMargin</a>( 11 );
127<a name="x14"></a> info-&gt;<a href="qwidget.html#setPalette">setPalette</a>( yellow );
128<a name="x4"></a> info-&gt;<a href="qlabel.html#setText">setText</a>( "Enter your personal\n"
129 "key here.\n\n"
130 "Your personal key\n"
131 "consists of 4 digits" );
132<a name="x5"></a><a name="x12"></a> info-&gt;<a href="qwidget.html#setMaximumWidth">setMaximumWidth</a>( info-&gt;<a href="qwidget.html#sizeHint">sizeHint</a>().width() );
133
134 <a href="qvbox.html">QVBox</a> *page = new <a href="qvbox.html">QVBox</a>( page1 );
135
136 <a href="qhbox.html">QHBox</a> *row1 = new <a href="qhbox.html">QHBox</a>( page );
137
138 (void)new <a href="qlabel.html">QLabel</a>( "Key:", row1 );
139
140 key = new <a href="qlineedit.html">QLineEdit</a>( row1 );
141<a name="x6"></a> key-&gt;<a href="qlineedit.html#setMaxLength">setMaxLength</a>( 4 );
142<a name="x7"></a> key-&gt;<a href="qlineedit.html#setValidator">setValidator</a>( new <a href="qintvalidator.html">QIntValidator</a>( 1000, 9999, key ) );
143
144<a name="x9"></a> <a href="qobject.html#connect">connect</a>( key, SIGNAL( <a href="qlineedit.html#textChanged">textChanged</a>( const <a href="qstring.html">QString</a> &amp; ) ),
145 this, SLOT( keyChanged( const <a href="qstring.html">QString</a> &amp; ) ) );
146
147 <a href="qwizard.html#addPage">addPage</a>( page1, "Personal Key" );
148
149 <a href="qwizard.html#setNextEnabled">setNextEnabled</a>( page1, FALSE );
150 <a href="qwizard.html#setHelpEnabled">setHelpEnabled</a>( page1, FALSE );
151}
152
153void <a name="f184"></a>Wizard::setupPage2()
154{
155 page2 = new <a href="qhbox.html">QHBox</a>( this );
156 page2-&gt;<a href="qhbox.html#setSpacing">setSpacing</a>(8);
157
158 <a href="qlabel.html">QLabel</a> *info = new <a href="qlabel.html">QLabel</a>( page2 );
159 info-&gt;<a href="qframe.html#setMargin">setMargin</a>( 11 );
160 info-&gt;<a href="qwidget.html#setPalette">setPalette</a>( yellow );
161 info-&gt;<a href="qlabel.html#setText">setText</a>( "\n"
162 "Enter your personal\n"
163 "data here.\n\n"
164 "The required fields are\n"
165 "First Name, Last Name \n"
166 "and E-Mail.\n" );
167 info-&gt;<a href="qwidget.html#setMaximumWidth">setMaximumWidth</a>( info-&gt;<a href="qwidget.html#sizeHint">sizeHint</a>().width() );
168
169 <a href="qvbox.html">QVBox</a> *page = new <a href="qvbox.html">QVBox</a>( page2 );
170
171 <a href="qhbox.html">QHBox</a> *row1 = new <a href="qhbox.html">QHBox</a>( page );
172 <a href="qhbox.html">QHBox</a> *row2 = new <a href="qhbox.html">QHBox</a>( page );
173 <a href="qhbox.html">QHBox</a> *row3 = new <a href="qhbox.html">QHBox</a>( page );
174 <a href="qhbox.html">QHBox</a> *row4 = new <a href="qhbox.html">QHBox</a>( page );
175 <a href="qhbox.html">QHBox</a> *row5 = new <a href="qhbox.html">QHBox</a>( page );
176
177 <a href="qlabel.html">QLabel</a> *label1 = new <a href="qlabel.html">QLabel</a>( " First Name: ", row1 );
178<a name="x3"></a> label1-&gt;<a href="qlabel.html#setAlignment">setAlignment</a>( Qt::AlignVCenter );
179 <a href="qlabel.html">QLabel</a> *label2 = new <a href="qlabel.html">QLabel</a>( " Last Name: ", row2 );
180 label2-&gt;<a href="qlabel.html#setAlignment">setAlignment</a>( Qt::AlignVCenter );
181 <a href="qlabel.html">QLabel</a> *label3 = new <a href="qlabel.html">QLabel</a>( " Address: ", row3 );
182 label3-&gt;<a href="qlabel.html#setAlignment">setAlignment</a>( Qt::AlignVCenter );
183 <a href="qlabel.html">QLabel</a> *label4 = new <a href="qlabel.html">QLabel</a>( " Phone Number: ", row4 );
184 label4-&gt;<a href="qlabel.html#setAlignment">setAlignment</a>( Qt::AlignVCenter );
185 <a href="qlabel.html">QLabel</a> *label5 = new <a href="qlabel.html">QLabel</a>( " E-Mail: ", row5 );
186 label5-&gt;<a href="qlabel.html#setAlignment">setAlignment</a>( Qt::AlignVCenter );
187
188<a name="x13"></a> label1-&gt;<a href="qwidget.html#setMinimumWidth">setMinimumWidth</a>( label4-&gt;<a href="qwidget.html#sizeHint">sizeHint</a>().width() );
189 label2-&gt;<a href="qwidget.html#setMinimumWidth">setMinimumWidth</a>( label4-&gt;<a href="qwidget.html#sizeHint">sizeHint</a>().width() );
190 label3-&gt;<a href="qwidget.html#setMinimumWidth">setMinimumWidth</a>( label4-&gt;<a href="qwidget.html#sizeHint">sizeHint</a>().width() );
191 label4-&gt;<a href="qwidget.html#setMinimumWidth">setMinimumWidth</a>( label4-&gt;<a href="qwidget.html#sizeHint">sizeHint</a>().width() );
192 label5-&gt;<a href="qwidget.html#setMinimumWidth">setMinimumWidth</a>( label4-&gt;<a href="qwidget.html#sizeHint">sizeHint</a>().width() );
193
194 firstName = new <a href="qlineedit.html">QLineEdit</a>( row1 );
195 lastName = new <a href="qlineedit.html">QLineEdit</a>( row2 );
196 address = new <a href="qlineedit.html">QLineEdit</a>( row3 );
197 phone = new <a href="qlineedit.html">QLineEdit</a>( row4 );
198 email = new <a href="qlineedit.html">QLineEdit</a>( row5 );
199
200 <a href="qobject.html#connect">connect</a>( firstName, SIGNAL( <a href="qlineedit.html#textChanged">textChanged</a>( const <a href="qstring.html">QString</a> &amp; ) ),
201 this, SLOT( dataChanged( const <a href="qstring.html">QString</a> &amp; ) ) );
202 <a href="qobject.html#connect">connect</a>( lastName, SIGNAL( <a href="qlineedit.html#textChanged">textChanged</a>( const <a href="qstring.html">QString</a> &amp; ) ),
203 this, SLOT( dataChanged( const <a href="qstring.html">QString</a> &amp; ) ) );
204 <a href="qobject.html#connect">connect</a>( email, SIGNAL( <a href="qlineedit.html#textChanged">textChanged</a>( const <a href="qstring.html">QString</a> &amp; ) ),
205 this, SLOT( dataChanged( const <a href="qstring.html">QString</a> &amp; ) ) );
206
207 <a href="qwizard.html#addPage">addPage</a>( page2, "Personal Data" );
208
209 <a href="qwizard.html#setHelpEnabled">setHelpEnabled</a>( page2, FALSE );
210}
211
212void <a name="f185"></a>Wizard::setupPage3()
213{
214 page3 = new <a href="qhbox.html">QHBox</a>( this );
215 page3-&gt;<a href="qhbox.html#setSpacing">setSpacing</a>(8);
216
217 <a href="qlabel.html">QLabel</a> *info = new <a href="qlabel.html">QLabel</a>( page3 );
218 info-&gt;<a href="qwidget.html#setPalette">setPalette</a>( yellow );
219 info-&gt;<a href="qlabel.html#setText">setText</a>( "\n"
220 "Look here to see of\n"
221 "the data you entered\n"
222 "is correct. To confirm,\n"
223 "press the [Finish] button\n"
224 "else go back to correct\n"
225 "mistakes." );
226 info-&gt;<a href="qframe.html#setMargin">setMargin</a>( 11 );
227 info-&gt;<a href="qlabel.html#setAlignment">setAlignment</a>( AlignTop|AlignLeft );
228 info-&gt;<a href="qwidget.html#setMaximumWidth">setMaximumWidth</a>( info-&gt;<a href="qwidget.html#sizeHint">sizeHint</a>().width() );
229
230 <a href="qvbox.html">QVBox</a> *page = new <a href="qvbox.html">QVBox</a>( page3 );
231
232 <a href="qhbox.html">QHBox</a> *row1 = new <a href="qhbox.html">QHBox</a>( page );
233 <a href="qhbox.html">QHBox</a> *row2 = new <a href="qhbox.html">QHBox</a>( page );
234 <a href="qhbox.html">QHBox</a> *row3 = new <a href="qhbox.html">QHBox</a>( page );
235 <a href="qhbox.html">QHBox</a> *row4 = new <a href="qhbox.html">QHBox</a>( page );
236 <a href="qhbox.html">QHBox</a> *row5 = new <a href="qhbox.html">QHBox</a>( page );
237 <a href="qhbox.html">QHBox</a> *row6 = new <a href="qhbox.html">QHBox</a>( page );
238
239 <a href="qlabel.html">QLabel</a> *label1 = new <a href="qlabel.html">QLabel</a>( " Personal Key: ", row1 );
240 label1-&gt;<a href="qlabel.html#setAlignment">setAlignment</a>( Qt::AlignVCenter );
241 <a href="qlabel.html">QLabel</a> *label2 = new <a href="qlabel.html">QLabel</a>( " First Name: ", row2 );
242 label2-&gt;<a href="qlabel.html#setAlignment">setAlignment</a>( Qt::AlignVCenter );
243 <a href="qlabel.html">QLabel</a> *label3 = new <a href="qlabel.html">QLabel</a>( " Last Name: ", row3 );
244 label3-&gt;<a href="qlabel.html#setAlignment">setAlignment</a>( Qt::AlignVCenter );
245 <a href="qlabel.html">QLabel</a> *label4 = new <a href="qlabel.html">QLabel</a>( " Address: ", row4 );
246 label4-&gt;<a href="qlabel.html#setAlignment">setAlignment</a>( Qt::AlignVCenter );
247 <a href="qlabel.html">QLabel</a> *label5 = new <a href="qlabel.html">QLabel</a>( " Phone Number: ", row5 );
248 label5-&gt;<a href="qlabel.html#setAlignment">setAlignment</a>( Qt::AlignVCenter );
249 <a href="qlabel.html">QLabel</a> *label6 = new <a href="qlabel.html">QLabel</a>( " E-Mail: ", row6 );
250 label6-&gt;<a href="qlabel.html#setAlignment">setAlignment</a>( Qt::AlignVCenter );
251
252 label1-&gt;<a href="qwidget.html#setMinimumWidth">setMinimumWidth</a>( label1-&gt;<a href="qwidget.html#sizeHint">sizeHint</a>().width() );
253 label2-&gt;<a href="qwidget.html#setMinimumWidth">setMinimumWidth</a>( label1-&gt;<a href="qwidget.html#sizeHint">sizeHint</a>().width() );
254 label3-&gt;<a href="qwidget.html#setMinimumWidth">setMinimumWidth</a>( label1-&gt;<a href="qwidget.html#sizeHint">sizeHint</a>().width() );
255 label4-&gt;<a href="qwidget.html#setMinimumWidth">setMinimumWidth</a>( label1-&gt;<a href="qwidget.html#sizeHint">sizeHint</a>().width() );
256 label5-&gt;<a href="qwidget.html#setMinimumWidth">setMinimumWidth</a>( label1-&gt;<a href="qwidget.html#sizeHint">sizeHint</a>().width() );
257 label6-&gt;<a href="qwidget.html#setMinimumWidth">setMinimumWidth</a>( label1-&gt;<a href="qwidget.html#sizeHint">sizeHint</a>().width() );
258
259 lKey = new <a href="qlabel.html">QLabel</a>( row1 );
260 lFirstName = new <a href="qlabel.html">QLabel</a>( row2 );
261 lLastName = new <a href="qlabel.html">QLabel</a>( row3 );
262 lAddress = new <a href="qlabel.html">QLabel</a>( row4 );
263 lPhone = new <a href="qlabel.html">QLabel</a>( row5 );
264 lEmail = new <a href="qlabel.html">QLabel</a>( row6 );
265
266 <a href="qwizard.html#addPage">addPage</a>( page3, "Finish" );
267
268 <a href="qwizard.html#setFinishEnabled">setFinishEnabled</a>( page3, TRUE );
269 <a href="qwizard.html#setHelpEnabled">setHelpEnabled</a>( page3, FALSE );
270}
271
272<a name="x15"></a>void Wizard::<a href="qwizard.html#showPage">showPage</a>( <a href="qwidget.html">QWidget</a>* page )
273{
274 if ( page == page1 ) {
275 } else if ( page == page2 ) {
276 } else if ( page == page3 ) {
277<a name="x8"></a> lKey-&gt;<a href="qlabel.html#setText">setText</a>( key-&gt;<a href="qlineedit.html#text">text</a>() );
278 lFirstName-&gt;<a href="qlabel.html#setText">setText</a>( firstName-&gt;<a href="qlineedit.html#text">text</a>() );
279 lLastName-&gt;<a href="qlabel.html#setText">setText</a>( lastName-&gt;<a href="qlineedit.html#text">text</a>() );
280 lAddress-&gt;<a href="qlabel.html#setText">setText</a>( address-&gt;<a href="qlineedit.html#text">text</a>() );
281 lPhone-&gt;<a href="qlabel.html#setText">setText</a>( phone-&gt;<a href="qlineedit.html#text">text</a>() );
282 lEmail-&gt;<a href="qlabel.html#setText">setText</a>( email-&gt;<a href="qlineedit.html#text">text</a>() );
283 }
284
285 QWizard::<a href="qwizard.html#showPage">showPage</a>(page);
286
287 if ( page == page1 ) {
288 keyChanged( key-&gt;<a href="qlineedit.html#text">text</a>() );
289 key-&gt;<a href="qwidget.html#setFocus">setFocus</a>();
290 } else if ( page == page2 ) {
291 dataChanged( firstName-&gt;<a href="qlineedit.html#text">text</a>() );
292 firstName-&gt;<a href="qwidget.html#setFocus">setFocus</a>();
293 } else if ( page == page3 ) {
294 <a href="qwizard.html#finishButton">finishButton</a>()-&gt;setEnabled( TRUE );
295 <a href="qwizard.html#finishButton">finishButton</a>()-&gt;setFocus();
296 }
297}
298
299void <a name="f186"></a>Wizard::keyChanged( const <a href="qstring.html">QString</a> &amp;text )
300{
301 <a href="qstring.html">QString</a> t = text;
302 int p = 0;
303<a name="x10"></a> bool on = ( key-&gt;<a href="qlineedit.html#validator">validator</a>()-&gt;validate(t, p) == QValidator::Acceptable );
304 <a href="qwizard.html#nextButton">nextButton</a>()-&gt;setEnabled( on );
305}
306
307void <a name="f187"></a>Wizard::dataChanged( const <a href="qstring.html">QString</a> &amp; )
308{
309 if ( !firstName-&gt;<a href="qlineedit.html#text">text</a>().isEmpty() &amp;&amp;
310 !lastName-&gt;<a href="qlineedit.html#text">text</a>().isEmpty() &amp;&amp;
311 !email-&gt;<a href="qlineedit.html#text">text</a>().isEmpty() )
312 <a href="qwizard.html#nextButton">nextButton</a>()-&gt;setEnabled( TRUE );
313 else
314 <a href="qwizard.html#nextButton">nextButton</a>()-&gt;setEnabled( FALSE );
315}
316</pre>
317
318<p> <hr>
319<p> Main:
320<p> <pre>/****************************************************************************
321** $Id: wizard-example.html 2051 2007-02-21 10:04:20Z chehrlic $
322**
323** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.
324**
325** This file is part of an example program for Qt. This example
326** program may be used, distributed and modified without limitation.
327**
328*****************************************************************************/
329
330#include "wizard.h"
331#include &lt;<a href="qapplication-h.html">qapplication.h</a>&gt;
332
333int main(int argc,char **argv)
334{
335 <a href="qapplication.html">QApplication</a> a(argc,argv);
336
337 Wizard wizard;
338 wizard.<a href="qwidget.html#setCaption">setCaption</a>("Qt Example - Wizard");
339<a name="x16"></a> return wizard.<a href="qdialog.html#exec">exec</a>();
340}
341</pre>
342
343<p>See also <a href="examples.html">Examples</a>.
344
345<!-- eof -->
346<p><address><hr><div align=center>
347<table width=100% cellspacing=0 border=0><tr>
348<td>Copyright &copy; 2007
349<a href="troll.html">Trolltech</a><td align=center><a href="trademarks.html">Trademarks</a>
350<td align=right><div align=right>Qt 3.3.8</div>
351</table></div></address></body>
352</html>
Note: See TracBrowser for help on using the repository browser.