/****************************************************************************
** $Id: listbox_combo.h,v 1.1 1999/06/03 10:08:55 warwick Exp $
**
** Copyright (C) 1992-1999 Troll Tech 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.
**
*****************************************************************************/
#ifndef LISTBOX_COMBO_H
#define LISTBOX_COMBO_H
#include <qvbox.h>
class QListBox;
class QLabel;
class ListBoxCombo : public QVBox
{
Q_OBJECT
public:
ListBoxCombo( QWidget *parent = 0, const char *name = 0 );
protected:
QListBox *lb1, *lb2;
QLabel *label1, *label2;
protected slots:
void slotLeft2Right();
void slotCombo1Activated( const QString &s );
void slotCombo2Activated( const QString &s );
};
#endif
/****************************************************************************
** $Id: listbox_combo.cpp,v 1.3 1999/06/11 18:17:49 warwick Exp $
**
** Copyright (C) 1992-1999 Troll Tech 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.
**
*****************************************************************************/
#include "listbox_combo.h"
#include <qcombobox.h>
#include <qlistbox.h>
#include <qhbox.h>
#include <qpushbutton.h>
#include <qstring.h>
#include <qpixmap.h>
#include <qlabel.h>
/*
* Constructor
*
* Creates child widgets of the ListBoxCombo widget
*/
ListBoxCombo::ListBoxCombo( QWidget *parent, const char *name )
: QVBox( parent, name )
{
setMargin( 5 );
unsigned int i;
QString str;
QHBox *row1 = new QHBox( this );
row1->setMargin( 5 );
// Create a multi-selection ListBox...
lb1 = new QListBox( row1 );
lb1->setMultiSelection( TRUE );
// ...insert a pixmap item...
lb1->insertItem( QPixmap( "qtlogo.png" ) );
// ...and 100 text items
for ( i = 0; i < 100; i++ ) {
str = QString( "Listbox Item %1" ).arg( i );
lb1->insertItem( str );
}
// Create a pushbutton...
QPushButton *arrow1 = new QPushButton( " -> ", row1 );
// ...and connect the clicked SIGNAL with the SLOT slotLeft2Right
connect( arrow1, SIGNAL( clicked() ), this, SLOT( slotLeft2Right() ) );
// create an empty single-selection ListBox
lb2 = new QListBox( row1 );
QHBox *row2 = new QHBox( this );
row2->setMargin( 5 );
QVBox *box1 = new QVBox( row2 );
// Create a non-editable Combobox and a label below...
QComboBox *cb1 = new QComboBox( FALSE, box1 );
label1 = new QLabel( "Current Item: Combobox Item 0", box1 );
label1->setMaximumHeight( label1->sizeHint().height() * 2 );
label1->setFrameStyle( QFrame::Panel | QFrame::Sunken );
//...and insert 50 items into the Combobox
for ( i = 0; i < 50; i++ ) {
str = QString( "Combobox Item %1" ).arg( i );
cb1->insertItem( str );
}
QVBox *box2 = new QVBox( row2 );
// Create an editable Combobox and a label below...
QComboBox *cb2 = new QComboBox( TRUE, box2 );
label2 = new QLabel( "Current Item: Combobox Item 0", box2 );
label2->setMaximumHeight( label2->sizeHint().height() * 2 );
label2->setFrameStyle( QFrame::Panel | QFrame::Sunken );
// ... and insert 50 items into the Combobox
for ( i = 0; i < 50; i++ ) {
str = QString( "Combobox Item %1" ).arg( i );
cb2->insertItem( str );
}
// Connect the activated SIGNALs of the Comboboxes with SLOTs
connect( cb1, SIGNAL( activated( const QString & ) ), this, SLOT( slotCombo1Activated( const QString & ) ) );
connect( cb2, SIGNAL( activated( const QString & ) ), this, SLOT( slotCombo2Activated( const QString & ) ) );
}
/*
* 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++ ) {
QListBoxItem *item = lb1->item( i );
// if the item is selected...
if ( item->selected() ) {
// ...and it is a text item...
if ( !item->text().isEmpty() )
// ...insert an item with the same text into the second ListBox
lb2->insertItem( new QListBoxText( item->text() ) );
// ...and if it is a pixmap item...
else if ( item->pixmap() )
// ...insert an item with the same pixmap into the second ListBox
lb2->insertItem( new QListBoxPixmap( *item->pixmap() ) );
}
}
}
/*
* SLOT slotCombo1Activated( const QString &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 QString &s )
{
label1->setText( QString( "Current Item: %1" ).arg( s ) );
}
/*
* SLOT slotCombo2Activated( const QString &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 QString &s )
{
label2->setText( QString( "Current Item: %1" ).arg( s ) );
}
/****************************************************************************
** $Id: main.cpp,v 1.1 1999/06/03 10:08:55 warwick Exp $
**
** Copyright (C) 1992-1999 Troll Tech 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.
**
*****************************************************************************/
#include "listbox_combo.h"
#include <qapplication.h>
int main( int argc, char **argv )
{
QApplication a( argc, argv );
ListBoxCombo listboxcombo;
listboxcombo.resize( 400, 270 );
listboxcombo.setCaption( "Examples for Listboxes and Comboboxes" );
a.setMainWidget( &listboxcombo );
listboxcombo.show();
return a.exec();
}
| Copyright © 1999 Troll Tech | Trademarks | Qt version 2.0.2
|