|
|
Home | All Classes | Main Classes | Annotated | Grouped Classes | Functions |
This example shows how to use the different modes (single columns, multiple columns, fixed number of rows, etc.) of QListBox.
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 Qt. This example ** program may be used, distributed and modified without limitation. ** *****************************************************************************/ #ifndef LISTBOX_H #define LISTBOX_H class QSpinBox; class QListBox; class QButtonGroup; #include <qwidget.h> class ListBoxDemo: public QWidget { Q_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: QListBox * l; QSpinBox * columns; QSpinBox * rows; QButtonGroup * 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 Qt. This example ** program may be used, distributed and modified without limitation. ** *****************************************************************************/ #include "listbox.h" #include <qlabel.h> #include <qradiobutton.h> #include <qcheckbox.h> #include <qspinbox.h> #include <qlistbox.h> #include <qbuttongroup.h> #include <qlayout.h> #include <qpushbutton.h> ListBoxDemo::ListBoxDemo() : QWidget( 0, 0 ) { QGridLayout * g = new QGridLayout( this, 2, 2, 6 ); g->addWidget( new QLabel( "<b>Configuration:</b>", this ), 0, 0 ); g->addWidget( new QLabel( "<b>Result:</b>", this ), 0, 1 ); l = new QListBox( this ); g->addWidget( l, 1, 1 ); l->setFocusPolicy( QWidget::StrongFocus ); QVBoxLayout * v = new QVBoxLayout; g->addLayout( v, 1, 0 ); QRadioButton * b; bg = new QButtonGroup( 0 ); b = new QRadioButton( "Fixed number of columns,\n" "as many rows as needed.", this ); bg->insert( b ); v->addWidget( b ); b->setChecked( TRUE ); connect( b, SIGNAL(clicked()), this, SLOT(setNumCols()) ); QHBoxLayout * h = new QHBoxLayout; v->addLayout( h ); h->addSpacing( 30 ); h->addSpacing( 100 ); h->addWidget( new QLabel( "Columns:", this ) ); columns = new QSpinBox( this ); h->addWidget( columns ); v->addSpacing( 12 ); b = new QRadioButton( "As many columns as fit on-screen,\n" "as many rows as needed.", this ); bg->insert( b ); v->addWidget( b ); connect( b, SIGNAL(clicked()), this, SLOT(setColsByWidth()) ); v->addSpacing( 12 ); b = new QRadioButton( "Fixed number of rows,\n" "as many columns as needed.", this ); bg->insert( b ); v->addWidget( b ); connect( b, SIGNAL(clicked()), this, SLOT(setNumRows()) ); h = new QHBoxLayout; v->addLayout( h ); h->addSpacing( 30 ); h->addSpacing( 100 ); h->addWidget( new QLabel( "Rows:", this ) ); rows = new QSpinBox( this ); rows->setEnabled( FALSE ); h->addWidget( rows ); v->addSpacing( 12 ); b = new QRadioButton( "As many rows as fit on-screen,\n" "as many columns as needed.", this ); bg->insert( b ); v->addWidget( b ); connect( b, SIGNAL(clicked()), this, SLOT(setRowsByHeight()) ); v->addSpacing( 12 ); QCheckBox * cb = new QCheckBox( "Variable-height rows", this ); cb->setChecked( TRUE ); connect( cb, SIGNAL(toggled(bool)), this, SLOT(setVariableHeight(bool)) ); v->addWidget( cb ); v->addSpacing( 6 ); cb = new QCheckBox( "Variable-width columns", this ); connect( cb, SIGNAL(toggled(bool)), this, SLOT(setVariableWidth(bool)) ); v->addWidget( cb ); cb = new QCheckBox( "Extended-Selection", this ); connect( cb, SIGNAL(toggled(bool)), this, SLOT(setMultiSelection(bool)) ); v->addWidget( cb ); QPushButton *pb = new QPushButton( "Sort ascending", this ); connect( pb, SIGNAL( clicked() ), this, SLOT( sortAscending() ) ); v->addWidget( pb ); pb = new QPushButton( "Sort descending", this ); connect( pb, SIGNAL( clicked() ), this, SLOT( sortDescending() ) ); v->addWidget( pb ); v->addStretch( 100 ); int i = 0; while( ++i <= 2560 ) l->insertItem( QString::fromLatin1( "Item " ) + QString::number( i ), i ); columns->setRange( 1, 256 ); columns->setValue( 1 ); rows->setRange( 1, 256 ); rows->setValue( 256 ); connect( columns, SIGNAL(valueChanged(int)), this, SLOT(setNumCols()) ); connect( rows, SIGNAL(valueChanged(int)), this, 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( QListBox::FitToHeight ); } void ListBoxDemo::setColsByWidth() { columns->setEnabled( FALSE ); rows->setEnabled( FALSE ); l->setColumnMode( QListBox::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 ? QListBox::Extended : QListBox::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 Qt. This example ** program may be used, distributed and modified without limitation. ** *****************************************************************************/ #include "listbox.h" #include <qapplication.h> int main( int argc, char **argv ) { QApplication a( argc, argv ); ListBoxDemo t; t.setCaption( "Qt Example - Listbox" ); a.setMainWidget( &t ); t.show(); return a.exec(); }
See also Examples.
Copyright © 2007 Trolltech | Trademarks | Qt 3.3.8
|