#!/usr/bin/env python """************************************************************************** ** $Id: listbox.py,v 1.1 2003/05/30 17:47:57 phil Exp $ ** ** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. ** ** This file is part of an example program for Qt. This example ** program may be used, distributed and modified without limitation. ** ***************************************************************************""" import sys from qt import * FALSE = 0 TRUE = 1 class ListBoxDemo( QWidget ): def __init__( self, parent=None, name=None ): QWidget.__init__( self, parent, name ) b = FALSE g = QGridLayout( self, 2, 2, 6 ) g.addWidget( QLabel( "Configuration:", self ), 0, 0 ) g.addWidget( QLabel( "Result:", self ), 0, 1 ) self.l = QListBox( self ) g.addWidget( self.l, 1, 1 ) self.l.setFocusPolicy( QWidget.StrongFocus ) v = QVBoxLayout( ) g.addLayout( v, 1, 0 ) bg = QButtonGroup( self, None ) b = QRadioButton( "Fixed number of columns,\n" "as many rows as needed.", self ) bg.insert( b ) v.addWidget( b ) b.setChecked( TRUE ) self.connect( b, SIGNAL("clicked()"), self.setNumCols ) h = QHBoxLayout() v.addLayout( h ) h.addSpacing( 30 ) h.addSpacing( 100 ) h.addWidget( QLabel( "Columns:", self ) ) self.columns = QSpinBox( self ) h.addWidget( self.columns ) v.addSpacing( 12 ) b = QRadioButton( "As many columns as fit on-screen,\n" "as many rows as needed.", self ) bg.insert( b ) v.addWidget( b ) self.connect( b, SIGNAL("clicked()"), self.setColsByWidth ) v.addSpacing( 12 ) b = QRadioButton( "Fixed number of rows,\n" "as many columns as needed.", self ) bg.insert( b ) v.addWidget( b ) self.connect( b, SIGNAL("clicked()"), self.setNumRows ) h = QHBoxLayout() v.addLayout( h ) h.addSpacing( 30 ) h.addSpacing( 100 ) h.addWidget( QLabel( "Rows:", self ) ) self.rows = QSpinBox( self ) self.rows.setEnabled( FALSE ) h.addWidget( self.rows ) v.addSpacing( 12 ) b = QRadioButton( "As many rows as fit on-screen,\n" "as many columns as needed.", self ) bg.insert( b ) v.addWidget( b ) self.connect( b, SIGNAL("clicked()"), self.setRowsByHeight ) v.addSpacing( 12 ) cb = QCheckBox( "Variable-height rows", self ) cb.setChecked( TRUE ) self.connect( cb, SIGNAL("toggled(bool)"), self.setVariableHeight ) v.addWidget( cb ) v.addSpacing( 6 ) cb = QCheckBox( "Variable-width columns", self ) self.connect( cb, SIGNAL("toggled(bool)"), self.setVariableWidth ) v.addWidget( cb ) cb = QCheckBox( "Extended-Selection", self ) self.connect( cb, SIGNAL("toggled(bool)"), self.setMultiSelection ) v.addWidget( cb ) pb = QPushButton( "Sort ascending", self ) self.connect( pb, SIGNAL("clicked()"), self.sortAscending ) v.addWidget( pb ) pb = QPushButton( "Sort descending", self ) self.connect( pb, SIGNAL("clicked()"), self.sortDescending ) v.addWidget( pb ) v.addStretch( 100 ) i = 0 while i <= 2560: i+=1 self.l.insertItem( str(QString.fromLatin1( "Item " )) + str(QString.number( i )), i ) self.columns.setRange( 1, 256 ) self.columns.setValue( 1 ) self.rows.setRange( 1, 256 ) self.rows.setValue( 256 ) self.connect( self.columns, SIGNAL("valueChanged(int)"), self.setNumCols ) self.connect( self.rows, SIGNAL("valueChanged(int)"), self.setNumRows ) # slots def setNumCols( self ): self.columns.setEnabled( TRUE ) self.rows.setEnabled( FALSE ) self.l.setColumnMode( self.columns.value() ) def setNumRows( self ): self.columns.setEnabled( FALSE ) self.rows.setEnabled( TRUE ) self.l.setRowMode( self.rows.value() ) def setRowsByHeight( self ): self.columns.setEnabled( FALSE ) self.rows.setEnabled( FALSE ) self.l.setRowMode( QListBox.FitToHeight ) def setColsByWidth( self ): self.columns.setEnabled( FALSE ) self.rows.setEnabled( FALSE ) self.l.setColumnMode( QListBox.FitToWidth ) def setVariableWidth( self, b ): self.l.setVariableWidth( b ) def setVariableHeight( self, b ): self.l.setVariableHeight( b ) def setMultiSelection( self, b ): self.l.clearSelection() if b : self.l.setSelectionMode( QListBox.Extended ) else: self.l.setSelectionMode( QListBox.Single ) def sortAscending( self ): self.l.sort( TRUE ) def sortDescending( self ): self.l.sort( FALSE ) def main( args ): a = QApplication( args ) t = ListBoxDemo() t.setCaption( "Qt Example - Listbox" ) a.setMainWidget( t ) t.show() a.exec_loop() if __name__=="__main__": main(sys.argv)