Home | All Classes | Main Classes | Annotated | Grouped Classes | Functions |

# Listbox Example

This example shows how to use the different modes (single columns, multiple columns, fixed number of rows, etc.) of TQListBox.

Header file:

    /****************************************************************************
    ** $Id: qt/listbox.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 TQt.  This example
    ** program may be used, distributed and modified without limitation.
    **
    *****************************************************************************/

    #ifndef LISTBOX_H
    #define LISTBOX_H

    class TQSpinBox;
    class TQListBox;
    class TQButtonGroup;

    #include <ntqwidget.h>

    class ListBoxDemo: public TQWidget
    {
        TQ_OBJECT
    public:
        ListBoxDemo();
        ~ListBoxDemo();

    private slots:
        void setNumRows();
        void setNumCols();
        void setRowsByHeight();
        void setColsByWidth();
        void setVariableWidth( bool );
        void setVariableHeight( bool );
        void setMultiSelection( bool );
        void sortAscending();
        void sortDescending();

    private:
        TQListBox * l;
        TQSpinBox * columns;
        TQSpinBox * rows;
        TQButtonGroup * bg;
    };

    #endif

Implementation:

    /****************************************************************************
    ** $Id: qt/listbox.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 "listbox.h"

    #include <ntqlabel.h>
    #include <ntqradiobutton.h>
    #include <ntqcheckbox.h>
    #include <ntqspinbox.h>
    #include <ntqlistbox.h>
    #include <ntqbuttongroup.h>
    #include <ntqlayout.h>
    #include <ntqpushbutton.h>

    ListBoxDemo::ListBoxDemo()
        : TQWidget( 0, 0 )
    {
        TQGridLayout * g = new TQGridLayout( this, 2, 2, 6 );

        g->addWidget( new TQLabel( "<b>Configuration:</b>", this ), 0, 0 );
        g->addWidget( new TQLabel( "<b>Result:</b>", this ), 0, 1 );

        l = new TQListBox( this );
        g->addWidget( l, 1, 1 );
        l->setFocusPolicy( TQWidget::StrongFocus );

        TQVBoxLayout * v = new TQVBoxLayout;
        g->addLayout( v, 1, 0 );

        TQRadioButton * b;
        bg = new TQButtonGroup( 0 );

        b = new TQRadioButton( "Fixed number of columns,\n"
                              "as many rows as needed.",
                              this );
        bg->insert( b );
        v->addWidget( b );
        b->setChecked( TRUE );
        connect( b, TQ_SIGNAL(clicked()), this, TQ_SLOT(setNumCols()) );
        TQHBoxLayout * h = new TQHBoxLayout;
        v->addLayout( h );
        h->addSpacing( 30 );
        h->addSpacing( 100 );
        h->addWidget( new TQLabel( "Columns:", this ) );
        columns = new TQSpinBox( this );
        h->addWidget( columns );

        v->addSpacing( 12 );

        b = new TQRadioButton( "As many columns as fit on-screen,\n"
                              "as many rows as needed.",
                              this );
        bg->insert( b );
        v->addWidget( b );
        connect( b, TQ_SIGNAL(clicked()), this, TQ_SLOT(setColsByWidth()) );

        v->addSpacing( 12 );

        b = new TQRadioButton( "Fixed number of rows,\n"
                              "as many columns as needed.",
                              this );
        bg->insert( b );
        v->addWidget( b );
        connect( b, TQ_SIGNAL(clicked()), this, TQ_SLOT(setNumRows()) );
        h = new TQHBoxLayout;
        v->addLayout( h );
        h->addSpacing( 30 );
        h->addSpacing( 100 );
        h->addWidget( new TQLabel( "Rows:", this ) );
        rows = new TQSpinBox( this );
        rows->setEnabled( FALSE );
        h->addWidget( rows );

        v->addSpacing( 12 );

        b = new TQRadioButton( "As many rows as fit on-screen,\n"
                              "as many columns as needed.",
                              this );
        bg->insert( b );
        v->addWidget( b );
        connect( b, TQ_SIGNAL(clicked()), this, TQ_SLOT(setRowsByHeight()) );

        v->addSpacing( 12 );

        TQCheckBox * cb = new TQCheckBox( "Variable-height rows", this );
        cb->setChecked( TRUE );
        connect( cb, TQ_SIGNAL(toggled(bool)), this, TQ_SLOT(setVariableHeight(bool)) );
        v->addWidget( cb );
        v->addSpacing( 6 );

        cb = new TQCheckBox( "Variable-width columns", this );
        connect( cb, TQ_SIGNAL(toggled(bool)), this, TQ_SLOT(setVariableWidth(bool)) );
        v->addWidget( cb );

        cb = new TQCheckBox( "Extended-Selection", this );
        connect( cb, TQ_SIGNAL(toggled(bool)), this, TQ_SLOT(setMultiSelection(bool)) );
        v->addWidget( cb );

        TQPushButton *pb = new TQPushButton( "Sort ascending", this );
        connect( pb, TQ_SIGNAL( clicked() ), this, TQ_SLOT( sortAscending() ) );
        v->addWidget( pb );

        pb = new TQPushButton( "Sort descending", this );
        connect( pb, TQ_SIGNAL( clicked() ), this, TQ_SLOT( sortDescending() ) );
        v->addWidget( pb );

        v->addStretch( 100 );

        int i = 0;
        while( ++i <= 2560 )
            l->insertItem( TQString::fromLatin1( "Item " ) + TQString::number( i ),
                           i );
        columns->setRange( 1, 256 );
        columns->setValue( 1 );
        rows->setRange( 1, 256 );
        rows->setValue( 256 );

        connect( columns, TQ_SIGNAL(valueChanged(int)), this, TQ_SLOT(setNumCols()) );
        connect( rows, TQ_SIGNAL(valueChanged(int)), this, TQ_SLOT(setNumRows()) );
    }

    ListBoxDemo::~ListBoxDemo()
    {
        delete bg;
    }

    void ListBoxDemo::setNumRows()
    {
        columns->setEnabled( FALSE );
        rows->setEnabled( TRUE );
        l->setRowMode( rows->value() );
    }

    void ListBoxDemo::setNumCols()
    {
        columns->setEnabled( TRUE );
        rows->setEnabled( FALSE );
        l->setColumnMode( columns->value() );
    }

    void ListBoxDemo::setRowsByHeight()
    {
        columns->setEnabled( FALSE );
        rows->setEnabled( FALSE );
        l->setRowMode( TQListBox::FitToHeight );
    }

    void ListBoxDemo::setColsByWidth()
    {
        columns->setEnabled( FALSE );
        rows->setEnabled( FALSE );
        l->setColumnMode( TQListBox::FitToWidth );
    }

    void ListBoxDemo::setVariableWidth( bool b )
    {
        l->setVariableWidth( b );
    }

    void ListBoxDemo::setVariableHeight( bool b )
    {
        l->setVariableHeight( b );
    }

    void ListBoxDemo::setMultiSelection( bool b )
    {
        l->clearSelection();
        l->setSelectionMode( b ? TQListBox::Extended : TQListBox::Single );
    }

    void ListBoxDemo::sortAscending()
    {
        l->sort( TRUE );
    }

    void ListBoxDemo::sortDescending()
    {
        l->sort( 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 TQt.  This example
    ** program may be used, distributed and modified without limitation.
    **
    *****************************************************************************/

    #include "listbox.h"
    #include <ntqapplication.h>

    int main( int argc, char **argv )
    {
        TQApplication a( argc, argv );

        ListBoxDemo t;
        t.setCaption( "TQt Example - Listbox" );
        a.setMainWidget( &t );
        t.show();

        return a.exec();
    }

See also Examples.