Home | All Classes | Main Classes | Annotated | Grouped Classes | Functions |
This example program demonstrates how to use listboxes (with single selection and multi selection) and comboboxes (editable and non-editable).
Header file:
/**************************************************************************** ** $Id: qt/listboxcombo.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_COMBO_H #define LISTBOX_COMBO_H #include <ntqvbox.h> class TQListBox; class TQLabel; class ListBoxCombo : public TQVBox { TQ_OBJECT public: ListBoxCombo( TQWidget *parent = 0, const char *name = 0 ); protected: TQListBox *lb1, *lb2; TQLabel *label1, *label2; protected slots: void slotLeft2Right(); void slotCombo1Activated( const TQString &s ); void slotCombo2Activated( const TQString &s ); }; #endif
Implementation:
/**************************************************************************** ** $Id: qt/listboxcombo.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 "listboxcombo.h" #include <ntqcombobox.h> #include <ntqlistbox.h> #include <ntqhbox.h> #include <ntqpushbutton.h> #include <ntqstring.h> #include <ntqpixmap.h> #include <ntqlabel.h> #include <tqimage.h> #include <ntqpainter.h> #include <ntqstyle.h> class MyListBoxItem : public TQListBoxItem { public: MyListBoxItem() : TQListBoxItem() { setCustomHighlighting( TRUE ); } protected: virtual void paint( TQPainter * ); virtual int width( const TQListBox* ) const { return 100; } virtual int height( const TQListBox* ) const { return 16; } }; void MyListBoxItem::paint( TQPainter *painter ) { // evil trick: find out whether we are painted onto our listbox bool in_list_box = listBox() && listBox()->viewport() == painter->device(); TQRect r ( 0, 0, width( listBox() ), height( listBox() ) ); if ( in_list_box && isSelected() ) painter->eraseRect( r ); painter->fillRect( 5, 5, width( listBox() ) - 10, height( listBox() ) - 10, TQt::red ); if ( in_list_box && isCurrent() ) listBox()->style().drawPrimitive( TQStyle::PE_FocusRect, painter, r, listBox()->colorGroup() ); } /* * Constructor * * Creates child widgets of the ListBoxCombo widget */ ListBoxCombo::ListBoxCombo( TQWidget *parent, const char *name ) : TQVBox( parent, name ) { setMargin( 5 ); setSpacing( 5 ); unsigned int i; TQString str; TQHBox *row1 = new TQHBox( this ); row1->setSpacing( 5 ); // Create a multi-selection ListBox... lb1 = new TQListBox( row1 ); lb1->setSelectionMode( TQListBox::Multi ); // ...insert a pixmap item... lb1->insertItem( TQPixmap( "qtlogo.png" ) ); // ...and 100 text items for ( i = 0; i < 100; i++ ) { str = TQString( "Listbox Item %1" ).arg( i ); if ( !( i % 4 ) ) lb1->insertItem( TQPixmap( "fileopen.xpm" ), str ); else lb1->insertItem( str ); } // Create a pushbutton... TQPushButton *arrow1 = new TQPushButton( " -> ", row1 ); // ...and connect the clicked TQ_SIGNAL with the TQ_SLOT slotLeft2Right connect( arrow1, TQ_SIGNAL( clicked() ), this, TQ_SLOT( slotLeft2Right() ) ); // create an empty single-selection ListBox lb2 = new TQListBox( row1 ); TQHBox *row2 = new TQHBox( this ); row2->setSpacing( 5 ); TQVBox *box1 = new TQVBox( row2 ); box1->setSpacing( 5 ); // Create a non-editable Combobox and a label below... TQComboBox *cb1 = new TQComboBox( FALSE, box1 ); label1 = new TQLabel( "Current Item: Combobox Item 0", box1 ); label1->setMaximumHeight( label1->sizeHint().height() * 2 ); label1->setFrameStyle( TQFrame::Panel | TQFrame::Sunken ); //...and insert 50 items into the Combobox for ( i = 0; i < 50; i++ ) { str = TQString( "Combobox Item %1" ).arg( i ); if ( i % 9 ) cb1->insertItem( str ); else cb1->listBox()->insertItem( new MyListBoxItem ); } TQVBox *box2 = new TQVBox( row2 ); box2->setSpacing( 5 ); // Create an editable Combobox and a label below... TQComboBox *cb2 = new TQComboBox( TRUE, box2 ); label2 = new TQLabel( "Current Item: Combobox Item 0", box2 ); label2->setMaximumHeight( label2->sizeHint().height() * 2 ); label2->setFrameStyle( TQFrame::Panel | TQFrame::Sunken ); // ... and insert 50 items into the Combobox for ( i = 0; i < 50; i++ ) { str = TQString( "Combobox Item %1" ).arg( i ); if ( !( i % 4 ) ) cb2->insertItem( TQPixmap( "fileopen.xpm" ), str ); else cb2->insertItem( str ); } // Connect the activated SIGNALs of the Comboboxes with SLOTs connect( cb1, TQ_SIGNAL( activated( const TQString & ) ), this, TQ_SLOT( slotCombo1Activated( const TQString & ) ) ); connect( cb2, TQ_SIGNAL( activated( const TQString & ) ), this, TQ_SLOT( slotCombo2Activated( const TQString & ) ) ); } /* * TQ_SLOT slotLeft2Right * * Copies all selected items of the first ListBox into the * second ListBox */ void ListBoxCombo::slotLeft2Right() { // Go through all items of the first ListBox for ( unsigned int i = 0; i < lb1->count(); i++ ) { TQListBoxItem *item = lb1->item( i ); // if the item is selected... if ( item->isSelected() ) { // ...and it is a text item... if ( item->pixmap() && !item->text().isEmpty() ) lb2->insertItem( *item->pixmap(), item->text() ); else if ( !item->pixmap() ) lb2->insertItem( item->text() ); else if ( item->text().isEmpty() ) lb2->insertItem( *item->pixmap() ); } } } /* * TQ_SLOT slotCombo1Activated( const TQString &s ) * * Sets the text of the item which the user just selected * in the first Combobox (and is now the value of s) to * the first Label. */ void ListBoxCombo::slotCombo1Activated( const TQString &s ) { label1->setText( TQString( "Current Item: %1" ).arg( s ) ); } /* * TQ_SLOT slotCombo2Activated( const TQString &s ) * * Sets the text of the item which the user just selected * in the second Combobox (and is now the value of s) to * the second Label. */ void ListBoxCombo::slotCombo2Activated( const TQString &s ) { label2->setText( TQString( "Current Item: %1" ).arg( s ) ); }
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 "listboxcombo.h" #include <ntqapplication.h> int main( int argc, char **argv ) { TQApplication a( argc, argv ); ListBoxCombo listboxcombo; listboxcombo.resize( 400, 270 ); listboxcombo.setCaption( "TQt Example - Listboxes and Comboboxes" ); a.setMainWidget( &listboxcombo ); listboxcombo.show(); return a.exec(); }
See also Examples.
Copyright © 2007 Trolltech | Trademarks | TQt 3.3.8
|