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/checklists/checklists.doc:4 -->
|
---|
3 | <html>
|
---|
4 | <head>
|
---|
5 | <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
---|
6 | <title>Listviews with Checkable Items</title>
|
---|
7 | <style type="text/css"><!--
|
---|
8 | fn { margin-left: 1cm; text-indent: -1cm; }
|
---|
9 | a:link { color: #004faf; text-decoration: none }
|
---|
10 | a:visited { color: #672967; text-decoration: none }
|
---|
11 | body { 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 Classes</font></a>
|
---|
23 | | <a href="mainclasses.html">
|
---|
24 | <font color="#004faf">Main 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 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>Listviews with Checkable Items</h1>
|
---|
33 |
|
---|
34 |
|
---|
35 | <p>
|
---|
36 | This example program shows how to use listviews with different types of
|
---|
37 | checkable items.
|
---|
38 | <p> <hr>
|
---|
39 | <p> Header file:
|
---|
40 | <p> <pre>/****************************************************************************
|
---|
41 | ** $Id: checklists-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 CHECKLISTS_H
|
---|
51 | #define CHECKLISTS_H
|
---|
52 |
|
---|
53 | #include <<a href="qwidget-h.html">qwidget.h</a>>
|
---|
54 |
|
---|
55 | class QListView;
|
---|
56 | class QLabel;
|
---|
57 |
|
---|
58 | class CheckLists : public <a href="qwidget.html">QWidget</a>
|
---|
59 | {
|
---|
60 | <a href="metaobjects.html#Q_OBJECT">Q_OBJECT</a>
|
---|
61 |
|
---|
62 | public:
|
---|
63 | CheckLists( <a href="qwidget.html">QWidget</a> *parent = 0, const char *name = 0 );
|
---|
64 |
|
---|
65 | protected:
|
---|
66 | <a href="qlistview.html">QListView</a> *lv1, *lv2;
|
---|
67 | <a href="qlabel.html">QLabel</a> *label;
|
---|
68 |
|
---|
69 | protected slots:
|
---|
70 | void copy1to2();
|
---|
71 | void copy2to3();
|
---|
72 |
|
---|
73 | };
|
---|
74 |
|
---|
75 | #endif
|
---|
76 | </pre>
|
---|
77 |
|
---|
78 | <p> <hr>
|
---|
79 | <p> Implementation:
|
---|
80 | <p> <pre>/****************************************************************************
|
---|
81 | ** $Id: checklists-example.html 2051 2007-02-21 10:04:20Z chehrlic $
|
---|
82 | **
|
---|
83 | ** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.
|
---|
84 | **
|
---|
85 | ** This file is part of an example program for Qt. This example
|
---|
86 | ** program may be used, distributed and modified without limitation.
|
---|
87 | **
|
---|
88 | *****************************************************************************/
|
---|
89 |
|
---|
90 | #include "checklists.h"
|
---|
91 |
|
---|
92 | #include <<a href="qlistview-h.html">qlistview.h</a>>
|
---|
93 | #include <<a href="qvbox-h.html">qvbox.h</a>>
|
---|
94 | #include <<a href="qlabel-h.html">qlabel.h</a>>
|
---|
95 | #include <<a href="qvaluelist-h.html">qvaluelist.h</a>>
|
---|
96 | #include <<a href="qstring-h.html">qstring.h</a>>
|
---|
97 | #include <<a href="qpushbutton-h.html">qpushbutton.h</a>>
|
---|
98 | #include <<a href="qlayout-h.html">qlayout.h</a>>
|
---|
99 |
|
---|
100 | /*
|
---|
101 | * Constructor
|
---|
102 | *
|
---|
103 | * Create all child widgets of the CheckList Widget
|
---|
104 | */
|
---|
105 |
|
---|
106 | <a name="f248"></a>CheckLists::CheckLists( <a href="qwidget.html">QWidget</a> *parent, const char *name )
|
---|
107 | : <a href="qwidget.html">QWidget</a>( parent, name )
|
---|
108 | {
|
---|
109 | <a href="qhboxlayout.html">QHBoxLayout</a> *lay = new <a href="qhboxlayout.html">QHBoxLayout</a>( this );
|
---|
110 | <a name="x426"></a> lay-><a href="qlayout.html#setMargin">setMargin</a>( 5 );
|
---|
111 |
|
---|
112 | // create a widget which layouts its childs in a column
|
---|
113 | <a href="qvboxlayout.html">QVBoxLayout</a> *vbox1 = new <a href="qvboxlayout.html">QVBoxLayout</a>( lay );
|
---|
114 | vbox1-><a href="qlayout.html#setMargin">setMargin</a>( 5 );
|
---|
115 |
|
---|
116 | // First child: a Label
|
---|
117 | <a name="x423"></a> vbox1-><a href="qboxlayout.html#addWidget">addWidget</a>( new <a href="qlabel.html">QLabel</a>( "Check some items!", this ) );
|
---|
118 |
|
---|
119 | // Second child: the ListView
|
---|
120 | lv1 = new <a href="qlistview.html">QListView</a>( this );
|
---|
121 | vbox1-><a href="qboxlayout.html#addWidget">addWidget</a>( lv1 );
|
---|
122 | <a name="x427"></a> lv1-><a href="qlistview.html#addColumn">addColumn</a>( "Items" );
|
---|
123 | <a name="x429"></a> lv1-><a href="qlistview.html#setRootIsDecorated">setRootIsDecorated</a>( TRUE );
|
---|
124 |
|
---|
125 | // create a list with 4 ListViewItems which will be parent items of other ListViewItems
|
---|
126 | <a href="qvaluelist.html">QValueList</a><QListViewItem *> parentList;
|
---|
127 |
|
---|
128 | <a name="x434"></a> parentList.<a href="qvaluelist.html#append">append</a>( new <a href="qchecklistitem.html">QCheckListItem</a>( lv1, "Parent Item 1", QCheckListItem::CheckBoxController ) );
|
---|
129 | parentList.<a href="qvaluelist.html#append">append</a>( new <a href="qchecklistitem.html">QCheckListItem</a>( lv1, "Parent Item 2", QCheckListItem::CheckBoxController ) );
|
---|
130 | parentList.<a href="qvaluelist.html#append">append</a>( new <a href="qchecklistitem.html">QCheckListItem</a>( lv1, "Parent Item 3", QCheckListItem::CheckBoxController ) );
|
---|
131 | parentList.<a href="qvaluelist.html#append">append</a>( new <a href="qchecklistitem.html">QCheckListItem</a>( lv1, "Parent Item 4", QCheckListItem::CheckBoxController ) );
|
---|
132 |
|
---|
133 | <a href="qlistviewitem.html">QListViewItem</a> *item = 0;
|
---|
134 | unsigned int num = 1;
|
---|
135 | // go through the list of parent items...
|
---|
136 | <a name="x436"></a><a name="x435"></a> for ( QValueList<QListViewItem*>::Iterator it = parentList.<a href="qvaluelist.html#begin">begin</a>(); it != parentList.<a href="qvaluelist.html#end">end</a>();
|
---|
137 | ( *it )->setOpen( TRUE ), ++it, num++ ) {
|
---|
138 | item = *it;
|
---|
139 | // ...and create 5 checkable child ListViewItems for each parent item
|
---|
140 | for ( unsigned int i = 1; i <= 5; i++ )
|
---|
141 | (void)new <a href="qchecklistitem.html">QCheckListItem</a>( item, QString( "%1. Child of Parent %2" ).arg( i ).arg( num ), QCheckListItem::CheckBox );
|
---|
142 | }
|
---|
143 |
|
---|
144 | // Create another widget for layouting
|
---|
145 | <a href="qvboxlayout.html">QVBoxLayout</a> *tmp = new <a href="qvboxlayout.html">QVBoxLayout</a>( lay );
|
---|
146 | tmp-><a href="qlayout.html#setMargin">setMargin</a>( 5 );
|
---|
147 |
|
---|
148 | // create a pushbutton
|
---|
149 | <a href="qpushbutton.html">QPushButton</a> *copy1 = new <a href="qpushbutton.html">QPushButton</a>( " -> ", this );
|
---|
150 | tmp-><a href="qboxlayout.html#addWidget">addWidget</a>( copy1 );
|
---|
151 | <a name="x437"></a><a name="x433"></a> copy1-><a href="qwidget.html#setMaximumWidth">setMaximumWidth</a>( copy1-><a href="qwidget.html#sizeHint">sizeHint</a>().width() );
|
---|
152 | // connect the SIGNAL clicked() of the pushbutton with the SLOT copy1to2()
|
---|
153 | <a href="qobject.html#connect">connect</a>( copy1, SIGNAL( <a href="qbutton.html#clicked">clicked</a>() ), this, SLOT( copy1to2() ) );
|
---|
154 |
|
---|
155 | // another widget for layouting
|
---|
156 | <a href="qvboxlayout.html">QVBoxLayout</a> *vbox2 = new <a href="qvboxlayout.html">QVBoxLayout</a>( lay );
|
---|
157 | vbox2-><a href="qlayout.html#setMargin">setMargin</a>( 5 );
|
---|
158 |
|
---|
159 | // and another label
|
---|
160 | vbox2-><a href="qboxlayout.html#addWidget">addWidget</a>( new <a href="qlabel.html">QLabel</a>( "Check one item!", this ) );
|
---|
161 |
|
---|
162 | // create the second listview
|
---|
163 | lv2 = new <a href="qlistview.html">QListView</a>( this );
|
---|
164 | vbox2-><a href="qboxlayout.html#addWidget">addWidget</a>( lv2 );
|
---|
165 | lv2-><a href="qlistview.html#addColumn">addColumn</a>( "Items" );
|
---|
166 | lv2-><a href="qlistview.html#setRootIsDecorated">setRootIsDecorated</a>( TRUE );
|
---|
167 |
|
---|
168 | // another widget needed for layouting only
|
---|
169 | tmp = new <a href="qvboxlayout.html">QVBoxLayout</a>( lay );
|
---|
170 | tmp-><a href="qlayout.html#setMargin">setMargin</a>( 5 );
|
---|
171 |
|
---|
172 | // create another pushbutton...
|
---|
173 | <a href="qpushbutton.html">QPushButton</a> *copy2 = new <a href="qpushbutton.html">QPushButton</a>( " -> ", this );
|
---|
174 | lay-><a href="qboxlayout.html#addWidget">addWidget</a>( copy2 );
|
---|
175 | copy2-><a href="qwidget.html#setMaximumWidth">setMaximumWidth</a>( copy2-><a href="qwidget.html#sizeHint">sizeHint</a>().width() );
|
---|
176 | // ...and connect its clicked() SIGNAL to the copy2to3() SLOT
|
---|
177 | <a href="qobject.html#connect">connect</a>( copy2, SIGNAL( <a href="qbutton.html#clicked">clicked</a>() ), this, SLOT( copy2to3() ) );
|
---|
178 |
|
---|
179 | tmp = new <a href="qvboxlayout.html">QVBoxLayout</a>( lay );
|
---|
180 | tmp-><a href="qlayout.html#setMargin">setMargin</a>( 5 );
|
---|
181 |
|
---|
182 | // and create a label which will be at the right of the window
|
---|
183 | label = new <a href="qlabel.html">QLabel</a>( "No Item yet...", this );
|
---|
184 | tmp-><a href="qboxlayout.html#addWidget">addWidget</a>( label );
|
---|
185 | }
|
---|
186 |
|
---|
187 | /*
|
---|
188 | * SLOT copy1to2()
|
---|
189 | *
|
---|
190 | * Copies all checked ListViewItems from the first ListView to
|
---|
191 | * the second one, and inserts them as Radio-ListViewItem.
|
---|
192 | */
|
---|
193 |
|
---|
194 | void <a name="f249"></a>CheckLists::copy1to2()
|
---|
195 | {
|
---|
196 | // create an iterator which operates on the first ListView
|
---|
197 | <a href="qlistviewitemiterator.html">QListViewItemIterator</a> it( lv1 );
|
---|
198 |
|
---|
199 | <a name="x428"></a> lv2-><a href="qlistview.html#clear">clear</a>();
|
---|
200 |
|
---|
201 | // Insert first a controller Item into the second ListView. Always if Radio-ListViewItems
|
---|
202 | // are inserted into a Listview, the parent item of these MUST be a controller Item!
|
---|
203 | <a href="qchecklistitem.html">QCheckListItem</a> *item = new <a href="qchecklistitem.html">QCheckListItem</a>( lv2, "Controller", QCheckListItem::Controller );
|
---|
204 | <a name="x431"></a> item-><a href="qlistviewitem.html#setOpen">setOpen</a>( TRUE );
|
---|
205 |
|
---|
206 | // iterate through the first ListView...
|
---|
207 | <a name="x432"></a> for ( ; it.<a href="qlistviewitemiterator.html#current">current</a>(); ++it )
|
---|
208 | // ...check state of childs, and...
|
---|
209 | if ( it.<a href="qlistviewitemiterator.html#current">current</a>()->parent() )
|
---|
210 | // ...if the item is checked...
|
---|
211 | if ( ( (QCheckListItem*)it.<a href="qlistviewitemiterator.html#current">current</a>() )->isOn() )
|
---|
212 | // ...insert a Radio-ListViewItem with the same text into the second ListView
|
---|
213 | (void)new <a href="qchecklistitem.html">QCheckListItem</a>( item, it.<a href="qlistviewitemiterator.html#current">current</a>()->text( 0 ), QCheckListItem::RadioButton );
|
---|
214 |
|
---|
215 | <a name="x430"></a> if ( item-><a href="qlistviewitem.html#firstChild">firstChild</a>() )
|
---|
216 | ( ( <a href="qchecklistitem.html">QCheckListItem</a>* )item-><a href="qlistviewitem.html#firstChild">firstChild</a>() )->setOn( TRUE );
|
---|
217 | }
|
---|
218 |
|
---|
219 | /*
|
---|
220 | * SLOT copy2to3()
|
---|
221 | *
|
---|
222 | * Copies the checked item of the second ListView into the
|
---|
223 | * Label at the right.
|
---|
224 | */
|
---|
225 |
|
---|
226 | void <a name="f250"></a>CheckLists::copy2to3()
|
---|
227 | {
|
---|
228 | // create an iterator which operates on the second ListView
|
---|
229 | <a href="qlistviewitemiterator.html">QListViewItemIterator</a> it( lv2 );
|
---|
230 |
|
---|
231 | label-><a href="qlabel.html#setText">setText</a>( "No Item checked" );
|
---|
232 |
|
---|
233 | // iterate through the second ListView...
|
---|
234 | for ( ; it.<a href="qlistviewitemiterator.html#current">current</a>(); ++it )
|
---|
235 | // ...check state of childs, and...
|
---|
236 | if ( it.<a href="qlistviewitemiterator.html#current">current</a>()->parent() )
|
---|
237 | // ...if the item is checked...
|
---|
238 | if ( ( (QCheckListItem*)it.<a href="qlistviewitemiterator.html#current">current</a>() )->isOn() )
|
---|
239 | // ...set the text of the item to the label
|
---|
240 | label-><a href="qlabel.html#setText">setText</a>( it.<a href="qlistviewitemiterator.html#current">current</a>()->text( 0 ) );
|
---|
241 | }
|
---|
242 |
|
---|
243 | </pre>
|
---|
244 |
|
---|
245 | <p> <hr>
|
---|
246 | <p> Main:
|
---|
247 | <p> <pre>/****************************************************************************
|
---|
248 | ** $Id: checklists-example.html 2051 2007-02-21 10:04:20Z chehrlic $
|
---|
249 | **
|
---|
250 | ** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.
|
---|
251 | **
|
---|
252 | ** This file is part of an example program for Qt. This example
|
---|
253 | ** program may be used, distributed and modified without limitation.
|
---|
254 | **
|
---|
255 | *****************************************************************************/
|
---|
256 |
|
---|
257 | #include "checklists.h"
|
---|
258 | #include <<a href="qapplication-h.html">qapplication.h</a>>
|
---|
259 |
|
---|
260 | int main( int argc, char **argv )
|
---|
261 | {
|
---|
262 | <a href="qapplication.html">QApplication</a> a( argc, argv );
|
---|
263 |
|
---|
264 | CheckLists checklists;
|
---|
265 | checklists.<a href="qwidget.html#resize">resize</a>( 650, 350 );
|
---|
266 | checklists.<a href="qwidget.html#setCaption">setCaption</a>( "Qt Example - CheckLists" );
|
---|
267 | a.<a href="qapplication.html#setMainWidget">setMainWidget</a>( &checklists );
|
---|
268 | checklists.<a href="qwidget.html#show">show</a>();
|
---|
269 |
|
---|
270 | return a.<a href="qapplication.html#exec">exec</a>();
|
---|
271 | }
|
---|
272 | </pre>
|
---|
273 |
|
---|
274 | <p>See also <a href="examples.html">Examples</a>.
|
---|
275 |
|
---|
276 | <!-- eof -->
|
---|
277 | <p><address><hr><div align=center>
|
---|
278 | <table width=100% cellspacing=0 border=0><tr>
|
---|
279 | <td>Copyright © 2007
|
---|
280 | <a href="troll.html">Trolltech</a><td align=center><a href="trademarks.html">Trademarks</a>
|
---|
281 | <td align=right><div align=right>Qt 3.3.8</div>
|
---|
282 | </table></div></address></body>
|
---|
283 | </html>
|
---|