Home | All Classes | Main Classes | Annotated | Grouped Classes | Functions |
This example program shows how to use listviews with different types of checkable items.
Header file:
/**************************************************************************** ** $Id: qt/checklists.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 CHECKLISTS_H #define CHECKLISTS_H #include <tqwidget.h> class TQListView; class TQLabel; class CheckLists : public TQWidget { TQ_OBJECT public: CheckLists( TQWidget *parent = 0, const char *name = 0 ); protected: TQListView *lv1, *lv2; TQLabel *label; protected slots: void copy1to2(); void copy2to3(); }; #endif
Implementation:
/**************************************************************************** ** $Id: qt/checklists.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 "checklists.h" #include <tqlistview.h> #include <tqvbox.h> #include <tqlabel.h> #include <tqvaluelist.h> #include <tqstring.h> #include <tqpushbutton.h> #include <tqlayout.h> /* * Constructor * * Create all child widgets of the CheckList Widget */ CheckLists::CheckLists( TQWidget *parent, const char *name ) : TQWidget( parent, name ) { TQHBoxLayout *lay = new TQHBoxLayout( this ); lay->setMargin( 5 ); // create a widget which layouts its childs in a column TQVBoxLayout *vbox1 = new TQVBoxLayout( lay ); vbox1->setMargin( 5 ); // First child: a Label vbox1->addWidget( new TQLabel( "Check some items!", this ) ); // Second child: the ListView lv1 = new TQListView( this ); vbox1->addWidget( lv1 ); lv1->addColumn( "Items" ); lv1->setRootIsDecorated( TRUE ); // create a list with 4 ListViewItems which will be parent items of other ListViewItems TQValueList<TQListViewItem *> parentList; parentList.append( new TQCheckListItem( lv1, "Parent Item 1", TQCheckListItem::CheckBoxController ) ); parentList.append( new TQCheckListItem( lv1, "Parent Item 2", TQCheckListItem::CheckBoxController ) ); parentList.append( new TQCheckListItem( lv1, "Parent Item 3", TQCheckListItem::CheckBoxController ) ); parentList.append( new TQCheckListItem( lv1, "Parent Item 4", TQCheckListItem::CheckBoxController ) ); TQListViewItem *item = 0; unsigned int num = 1; // go through the list of parent items... for ( TQValueList<TQListViewItem*>::Iterator it = parentList.begin(); it != parentList.end(); ( *it )->setOpen( TRUE ), ++it, num++ ) { item = *it; // ...and create 5 checkable child ListViewItems for each parent item for ( unsigned int i = 1; i <= 5; i++ ) (void)new TQCheckListItem( item, TQString( "%1. Child of Parent %2" ).arg( i ).arg( num ), TQCheckListItem::CheckBox ); } // Create another widget for layouting TQVBoxLayout *tmp = new TQVBoxLayout( lay ); tmp->setMargin( 5 ); // create a pushbutton TQPushButton *copy1 = new TQPushButton( " -> ", this ); tmp->addWidget( copy1 ); copy1->setMaximumWidth( copy1->sizeHint().width() ); // connect the TQ_SIGNAL clicked() of the pushbutton with the TQ_SLOT copy1to2() connect( copy1, TQ_SIGNAL( clicked() ), this, TQ_SLOT( copy1to2() ) ); // another widget for layouting TQVBoxLayout *vbox2 = new TQVBoxLayout( lay ); vbox2->setMargin( 5 ); // and another label vbox2->addWidget( new TQLabel( "Check one item!", this ) ); // create the second listview lv2 = new TQListView( this ); vbox2->addWidget( lv2 ); lv2->addColumn( "Items" ); lv2->setRootIsDecorated( TRUE ); // another widget needed for layouting only tmp = new TQVBoxLayout( lay ); tmp->setMargin( 5 ); // create another pushbutton... TQPushButton *copy2 = new TQPushButton( " -> ", this ); lay->addWidget( copy2 ); copy2->setMaximumWidth( copy2->sizeHint().width() ); // ...and connect its clicked() TQ_SIGNAL to the copy2to3() TQ_SLOT connect( copy2, TQ_SIGNAL( clicked() ), this, TQ_SLOT( copy2to3() ) ); tmp = new TQVBoxLayout( lay ); tmp->setMargin( 5 ); // and create a label which will be at the right of the window label = new TQLabel( "No Item yet...", this ); tmp->addWidget( label ); } /* * TQ_SLOT copy1to2() * * Copies all checked ListViewItems from the first ListView to * the second one, and inserts them as Radio-ListViewItem. */ void CheckLists::copy1to2() { // create an iterator which operates on the first ListView TQListViewItemIterator it( lv1 ); lv2->clear(); // Insert first a controller Item into the second ListView. Always if Radio-ListViewItems // are inserted into a Listview, the parent item of these MUST be a controller Item! TQCheckListItem *item = new TQCheckListItem( lv2, "Controller", TQCheckListItem::Controller ); item->setOpen( TRUE ); // iterate through the first ListView... for ( ; it.current(); ++it ) // ...check state of childs, and... if ( it.current()->parent() ) // ...if the item is checked... if ( ( (TQCheckListItem*)it.current() )->isOn() ) // ...insert a Radio-ListViewItem with the same text into the second ListView (void)new TQCheckListItem( item, it.current()->text( 0 ), TQCheckListItem::RadioButton ); if ( item->firstChild() ) ( ( TQCheckListItem* )item->firstChild() )->setOn( TRUE ); } /* * TQ_SLOT copy2to3() * * Copies the checked item of the second ListView into the * Label at the right. */ void CheckLists::copy2to3() { // create an iterator which operates on the second ListView TQListViewItemIterator it( lv2 ); label->setText( "No Item checked" ); // iterate through the second ListView... for ( ; it.current(); ++it ) // ...check state of childs, and... if ( it.current()->parent() ) // ...if the item is checked... if ( ( (TQCheckListItem*)it.current() )->isOn() ) // ...set the text of the item to the label label->setText( it.current()->text( 0 ) ); }
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 "checklists.h" #include <ntqapplication.h> int main( int argc, char **argv ) { TQApplication a( argc, argv ); CheckLists checklists; checklists.resize( 650, 350 ); checklists.setCaption( "TQt Example - CheckLists" ); a.setMainWidget( &checklists ); checklists.show(); return a.exec(); }
See also Examples.
Copyright © 2007 Trolltech | Trademarks | TQt 3.3.8
|