<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- /home/espenr/tmp/qt - 3.3.8 - espenr - 2499/qt - x11 - free - 3.3.8/examples/table/bigtable/bigtable.doc:5 -->
< html >
< head >
< meta http-equiv = "Content-Type" content = "text/html; charset=ISO-8859-1" >
< title > How to create a large, sparse TQTable< / title >
< style type = "text/css" > < ! - -
fn { margin-left: 1cm; text-indent: -1cm; }
a:link { color: #004faf; text-decoration: none }
a:visited { color: #672967; text-decoration: none }
body { background: #ffffff; color: black; }
-->< / style >
< / head >
< body >
< table border = "0" cellpadding = "0" cellspacing = "0" width = "100%" >
< tr bgcolor = "#E5E5E5" >
< td valign = center >
< a href = "index.html" >
< font color = "#004faf" > Home< / font > < / a >
| < a href = "classes.html" >
< font color = "#004faf" > All Classes< / font > < / a >
| < a href = "mainclasses.html" >
< font color = "#004faf" > Main Classes< / font > < / a >
| < a href = "annotated.html" >
< font color = "#004faf" > Annotated< / font > < / a >
| < a href = "groups.html" >
< font color = "#004faf" > Grouped Classes< / font > < / a >
| < a href = "functions.html" >
< font color = "#004faf" > Functions< / font > < / a >
< / td >
< td align = "right" valign = "center" > < img src = "logo32.png" align = "right" width = "64" height = "32" border = "0" > < / td > < / tr > < / table > < h1 align = center > How to create a large, sparse TQTable< / h1 >
< p >
< p > This example shows a sparse table implementation using a < a href = "ntqintdict.html" > TQIntDict< / a > to
keep track of the cells that are actually in use.
< p > < hr >
< p > Implementation:
< p > < pre > /****************************************************************************
** $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 TQt. This example
** program may be used, distributed and modified without limitation.
**
*****************************************************************************/
#include < < a href = "qapplication-h.html" > ntqapplication.h< / a > >
#include < < a href = "qtable-h.html" > ntqtable.h< / a > >
// Table size
const int numRows = 1000000;
const int numCols = 1000000;
class MyTable : public < a href = "ntqtable.html" > TQTable< / a >
{
public:
MyTable( int r, int c ) : < a href = "ntqtable.html" > TQTable< / a > ( r, c ) {
< a name = "x1291" > < / a > items.< a href = "ntqptrcollection.html#setAutoDelete" > setAutoDelete< / a > ( TRUE );
widgets.< a href = "ntqptrcollection.html#setAutoDelete" > setAutoDelete< / a > ( TRUE );
setCaption( tr( "A 1 Million x 1 Million Cell Table" ) );
setLeftMargin( fontMetrics().width( "W999999W" ) );
}
void resizeData( int ) {}
< a name = "x1286" > < / a > < a href = "qtableitem.html" > TQTableItem< / a > *item( int r, int c ) const { return items.< a href = "ntqintdict.html#find" > find< / a > ( indexOf( r, c ) ); }
< a name = "x1288" > < / a > void setItem( int r, int c, TQTableItem *i ) { items.< a href = "ntqintdict.html#replace" > replace< / a > ( indexOf( r, c ), i ); }
< a name = "x1287" > < / a > void clearCell( int r, int c ) { items.< a href = "ntqintdict.html#remove" > remove< / a > ( indexOf( r, c ) ); }
void takeItem( < a href = "qtableitem.html" > TQTableItem< / a > *item )
{
items.< a href = "ntqptrcollection.html#setAutoDelete" > setAutoDelete< / a > ( FALSE );
< a name = "x1294" > < / a > < a name = "x1293" > < / a > items.< a href = "ntqintdict.html#remove" > remove< / a > ( indexOf( item-> < a href = "qtableitem.html#row" > row< / a > (), item-> < a href = "qtableitem.html#col" > col< / a > () ) );
items.< a href = "ntqptrcollection.html#setAutoDelete" > setAutoDelete< / a > ( TRUE );
}
void insertWidget( int r, int c, TQWidget *w ) { widgets.< a href = "ntqintdict.html#replace" > replace< / a > ( indexOf( r, c ), w ); }
< a href = "ntqwidget.html" > TQWidget< / a > *cellWidget( int r, int c ) const { return widgets.< a href = "ntqintdict.html#find" > find< / a > ( indexOf( r, c ) ); }
void clearCellWidget( int r, int c )
{
< a name = "x1289" > < / a > < a href = "ntqwidget.html" > TQWidget< / a > *w = widgets.< a href = "ntqintdict.html#take" > take< / a > ( indexOf( r, c ) );
if ( w )
< a name = "x1290" > < / a > w-> < a href = "ntqobject.html#deleteLater" > deleteLater< / a > ();
}
private:
< a href = "ntqintdict.html" > TQIntDict< / a > < TQTableItem> items;
< a href = "ntqintdict.html" > TQIntDict< / a > < TQWidget> widgets;
};
// The program starts here.
int main( int argc, char **argv )
{
< a href = "ntqapplication.html" > TQApplication< / a > app( argc, argv );
MyTable table( numRows, numCols );
app.< a href = "ntqapplication.html#setMainWidget" > setMainWidget< / a > ( & table );
< a name = "x1292" > < / a > table.< a href = "ntqwidget.html#show" > show< / a > ();
return app.< a href = "ntqapplication.html#exec" > exec< / a > ();
}
< / pre >
< p > < p > See also < a href = "table-examples.html" > Table Examples< / a > .
<!-- eof -->
< p > < address > < hr > < div align = center >
< table width = 100% cellspacing = 0 border = 0 > < tr >
< td > Copyright © 2007
< a href = "troll.html" > Trolltech< / a > < td align = center > < a href = "trademarks.html" > Trademarks< / a >
< td align = right > < div align = right > TQt 3.3.8< / div >
< / table > < / div > < / address > < / body >
< / html >