<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
< html >
< head >
< meta http-equiv = "Content-Type" content = "text/html; charset=ISO-8859-1" >
< title > Listboxes and Comboboxes< / title >
< style type = "text/css" > < ! - -
fn { margin-left: 1cm; text-indent: -1cm; }
a:link { color: #004faf; text-decoration: none }
a:visited { color: #672967; text-decoration: none }
body { background: #ffffff; color: black; }
-->< / style >
< / head >
< body >
< table border = "0" cellpadding = "0" cellspacing = "0" width = "100%" >
< tr bgcolor = "#E5E5E5" >
< td valign = center >
< a href = "index.html" >
< font color = "#004faf" > Home< / font > < / a >
| < a href = "classes.html" >
< font color = "#004faf" > All Classes< / font > < / a >
| < a href = "mainclasses.html" >
< font color = "#004faf" > Main Classes< / font > < / a >
| < a href = "annotated.html" >
< font color = "#004faf" > Annotated< / font > < / a >
| < a href = "groups.html" >
< font color = "#004faf" > Grouped Classes< / font > < / a >
| < a href = "functions.html" >
< font color = "#004faf" > Functions< / font > < / a >
< / td >
< td align = "right" valign = "center" > < img src = "logo32.png" align = "right" width = "64" height = "32" border = "0" > < / td > < / tr > < / table > < h1 align = center > Listboxes and Comboboxes< / h1 >
< p >
This example program demonstrates how to use listboxes (with single selection
and multi selection) and comboboxes (editable and non-editable).
< p > < hr >
< p > Header file:
< p > < pre > /****************************************************************************
** $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 < < a href = "tqvbox-h.html" > tqvbox.h< / a > >
class TQListBox;
class TQLabel;
class ListBoxCombo : public < a href = "tqvbox.html" > TQVBox< / a >
{
< a href = "metaobjects.html#TQ_OBJECT" > TQ_OBJECT< / a >
public:
ListBoxCombo( < a href = "tqwidget.html" > TQWidget< / a > *parent = 0, const char *name = 0 );
protected:
< a href = "tqlistbox.html" > TQListBox< / a > *lb1, *lb2;
< a href = "tqlabel.html" > TQLabel< / a > *label1, *label2;
protected slots:
void slotLeft2Right();
void slotCombo1Activated( const < a href = "tqstring.html" > TQString< / a > & s );
void slotCombo2Activated( const < a href = "tqstring.html" > TQString< / a > & s );
};
#endif
< / pre >
< p > < hr >
< p > Implementation:
< p > < pre > /****************************************************************************
** $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 < < a href = "tqcombobox-h.html" > tqcombobox.h< / a > >
#include < < a href = "tqlistbox-h.html" > tqlistbox.h< / a > >
#include < < a href = "tqhbox-h.html" > tqhbox.h< / a > >
#include < < a href = "tqpushbutton-h.html" > tqpushbutton.h< / a > >
#include < < a href = "tqstring-h.html" > tqstring.h< / a > >
#include < < a href = "tqpixmap-h.html" > tqpixmap.h< / a > >
#include < < a href = "tqlabel-h.html" > tqlabel.h< / a > >
#include < < a href = "tqimage-h.html" > tqimage.h< / a > >
#include < < a href = "tqpainter-h.html" > tqpainter.h< / a > >
#include < < a href = "tqstyle-h.html" > tqstyle.h< / a > >
class MyListBoxItem : public < a href = "tqlistboxitem.html" > TQListBoxItem< / a >
{
public:
MyListBoxItem()
: < a href = "tqlistboxitem.html" > TQListBoxItem< / a > ()
{
setCustomHighlighting( TRUE );
}
protected:
virtual void paint( < a href = "tqpainter.html" > TQPainter< / a > * );
virtual int width( const < a href = "tqlistbox.html" > TQListBox< / a > * ) const { return 100; }
virtual int height( const < a href = "tqlistbox.html" > TQListBox< / a > * ) const { return 16; }
};
< a name = "x1410" > < / a > void MyListBoxItem::< a href = "tqlistboxitem.html#paint" > paint< / a > ( < a href = "tqpainter.html" > TQPainter< / a > *painter )
{
// evil trick: find out whether we are painted onto our listbox
< a name = "x1413" > < / a > bool in_list_box = < a href = "tqlistboxitem.html#listBox" > listBox< / a > () & & listBox()-> viewport() == painter-> < a href = "tqpainter.html#device" > device< / a > ();
< a href = "tqrect.html" > TQRect< / a > r ( 0, 0, width( < a href = "tqlistboxitem.html#listBox" > listBox< / a > () ), height( < a href = "tqlistboxitem.html#listBox" > listBox< / a > () ) );
if ( in_list_box & & isSelected() )
< a name = "x1414" > < / a > painter-> < a href = "tqpainter.html#eraseRect" > eraseRect< / a > ( r );
< a name = "x1415" > < / a > painter-> < a href = "tqpainter.html#fillRect" > fillRect< / a > ( 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
*/
< a name = "f437" > < / a > ListBoxCombo::ListBoxCombo( < a href = "tqwidget.html" > TQWidget< / a > *parent, const char *name )
: < a href = "tqvbox.html" > TQVBox< / a > ( parent, name )
{
< a href = "tqframe.html#setMargin" > setMargin< / a > ( 5 );
< a href = "tqhbox.html#setSpacing" > setSpacing< / a > ( 5 );
unsigned int i;
< a href = "tqstring.html" > TQString< / a > str;
< a href = "tqhbox.html" > TQHBox< / a > *row1 = new < a href = "tqhbox.html" > TQHBox< / a > ( this );
< a name = "x1402" > < / a > row1-> < a href = "tqhbox.html#setSpacing" > setSpacing< / a > ( 5 );
// Create a multi-selection ListBox...
lb1 = new < a href = "tqlistbox.html" > TQListBox< / a > ( row1 );
< a name = "x1408" > < / a > lb1-> < a href = "tqlistbox.html#setSelectionMode" > setSelectionMode< / a > ( TQListBox::Multi );
// ...insert a pixmap item...
< a name = "x1406" > < / a > lb1-> < a href = "tqlistbox.html#insertItem" > insertItem< / a > ( TQPixmap( "qtlogo.png" ) );
// ...and 100 text items
for ( i = 0; i < 100; i++ ) {
str = TQString( "Listbox Item %1" ).arg( i );
if ( !( i % 4 ) )
lb1-> < a href = "tqlistbox.html#insertItem" > insertItem< / a > ( TQPixmap( "fileopen.xpm" ), str );
else
lb1-> < a href = "tqlistbox.html#insertItem" > insertItem< / a > ( str );
}
// Create a pushbutton...
< a href = "tqpushbutton.html" > TQPushButton< / a > *arrow1 = new < a href = "tqpushbutton.html" > TQPushButton< / a > ( " -> ", row1 );
// ...and connect the clicked TQ_SIGNAL with the TQ_SLOT slotLeft2Right
< a href = "tqobject.html#connect" > connect< / a > ( arrow1, TQ_SIGNAL( < a href = "tqbutton.html#clicked" > clicked< / a > () ), this, TQ_SLOT( slotLeft2Right() ) );
// create an empty single-selection ListBox
lb2 = new < a href = "tqlistbox.html" > TQListBox< / a > ( row1 );
< a href = "tqhbox.html" > TQHBox< / a > *row2 = new < a href = "tqhbox.html" > TQHBox< / a > ( this );
row2-> < a href = "tqhbox.html#setSpacing" > setSpacing< / a > ( 5 );
< a href = "tqvbox.html" > TQVBox< / a > *box1 = new < a href = "tqvbox.html" > TQVBox< / a > ( row2 );
box1-> < a href = "tqhbox.html#setSpacing" > setSpacing< / a > ( 5 );
// Create a non-editable Combobox and a label below...
< a href = "tqcombobox.html" > TQComboBox< / a > *cb1 = new < a href = "tqcombobox.html" > TQComboBox< / a > ( FALSE, box1 );
label1 = new < a href = "tqlabel.html" > TQLabel< / a > ( "Current Item: Combobox Item 0", box1 );
< a name = "x1416" > < / a > < a name = "x1404" > < / a > label1-> < a href = "tqwidget.html#setMaximumHeight" > setMaximumHeight< / a > ( label1-> < a href = "tqwidget.html#sizeHint" > sizeHint< / a > ().height() * 2 );
< a name = "x1401" > < / a > label1-> < a href = "tqframe.html#setFrameStyle" > setFrameStyle< / a > ( 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 )
< a name = "x1399" > < / a > cb1-> < a href = "tqcombobox.html#insertItem" > insertItem< / a > ( str );
else
< a name = "x1400" > < / a > cb1-> < a href = "tqcombobox.html#listBox" > listBox< / a > ()-> insertItem( new MyListBoxItem );
}
< a href = "tqvbox.html" > TQVBox< / a > *box2 = new < a href = "tqvbox.html" > TQVBox< / a > ( row2 );
box2-> < a href = "tqhbox.html#setSpacing" > setSpacing< / a > ( 5 );
// Create an editable Combobox and a label below...
< a href = "tqcombobox.html" > TQComboBox< / a > *cb2 = new < a href = "tqcombobox.html" > TQComboBox< / a > ( TRUE, box2 );
label2 = new < a href = "tqlabel.html" > TQLabel< / a > ( "Current Item: Combobox Item 0", box2 );
label2-> < a href = "tqwidget.html#setMaximumHeight" > setMaximumHeight< / a > ( label2-> < a href = "tqwidget.html#sizeHint" > sizeHint< / a > ().height() * 2 );
label2-> < a href = "tqframe.html#setFrameStyle" > setFrameStyle< / a > ( 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-> < a href = "tqcombobox.html#insertItem" > insertItem< / a > ( TQPixmap( "fileopen.xpm" ), str );
else
cb2-> < a href = "tqcombobox.html#insertItem" > insertItem< / a > ( str );
}
// Connect the activated SIGNALs of the Comboboxes with SLOTs
< a name = "x1398" > < / a > < a href = "tqobject.html#connect" > connect< / a > ( cb1, TQ_SIGNAL( < a href = "tqcombobox.html#activated" > activated< / a > ( const < a href = "tqstring.html" > TQString< / a > & ) ), this, TQ_SLOT( slotCombo1Activated( const < a href = "tqstring.html" > TQString< / a > & ) ) );
< a href = "tqobject.html#connect" > connect< / a > ( cb2, TQ_SIGNAL( < a href = "tqcombobox.html#activated" > activated< / a > ( const < a href = "tqstring.html" > TQString< / a > & ) ), this, TQ_SLOT( slotCombo2Activated( const < a href = "tqstring.html" > TQString< / a > & ) ) );
}
/*
* TQ_SLOT slotLeft2Right
*
* Copies all selected items of the first ListBox into the
* second ListBox
*/
void < a name = "f438" > < / a > ListBoxCombo::slotLeft2Right()
{
// Go through all items of the first ListBox
< a name = "x1405" > < / a > for ( unsigned int i = 0; i < lb1-> < a href = "tqlistbox.html#count" > count< / a > (); i++ ) {
< a name = "x1407" > < / a > < a href = "tqlistboxitem.html" > TQListBoxItem< / a > *item = lb1-> < a href = "tqlistbox.html#item" > item< / a > ( i );
// if the item is selected...
< a name = "x1409" > < / a > if ( item-> < a href = "tqlistboxitem.html#isSelected" > isSelected< / a > () ) {
// ...and it is a text item...
< a name = "x1412" > < / a > < a name = "x1411" > < / a > if ( item-> < a href = "tqlistboxitem.html#pixmap" > pixmap< / a > () & & !item-> < a href = "tqlistboxitem.html#text" > text< / a > ().isEmpty() )
lb2-> < a href = "tqlistbox.html#insertItem" > insertItem< / a > ( *item-> < a href = "tqlistboxitem.html#pixmap" > pixmap< / a > (), item-> < a href = "tqlistboxitem.html#text" > text< / a > () );
else if ( !item-> < a href = "tqlistboxitem.html#pixmap" > pixmap< / a > () )
lb2-> < a href = "tqlistbox.html#insertItem" > insertItem< / a > ( item-> < a href = "tqlistboxitem.html#text" > text< / a > () );
else if ( item-> < a href = "tqlistboxitem.html#text" > text< / a > ().isEmpty() )
lb2-> < a href = "tqlistbox.html#insertItem" > insertItem< / a > ( *item-> < a href = "tqlistboxitem.html#pixmap" > pixmap< / a > () );
}
}
}
/*
* TQ_SLOT slotCombo1Activated( const < a href = "tqstring.html" > TQString< / a > & 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 < a name = "f439" > < / a > ListBoxCombo::slotCombo1Activated( const < a href = "tqstring.html" > TQString< / a > & s )
{
< a name = "x1403" > < / a > label1-> < a href = "tqlabel.html#setText" > setText< / a > ( TQString( "Current Item: %1" ).arg( s ) );
}
/*
* TQ_SLOT slotCombo2Activated( const < a href = "tqstring.html" > TQString< / a > & 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 < a name = "f440" > < / a > ListBoxCombo::slotCombo2Activated( const < a href = "tqstring.html" > TQString< / a > & s )
{
label2-> < a href = "tqlabel.html#setText" > setText< / a > ( TQString( "Current Item: %1" ).arg( s ) );
}
< / pre >
< p > < hr >
< p > Main:
< p > < pre > /****************************************************************************
** $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 < < a href = "tqapplication-h.html" > tqapplication.h< / a > >
int main( int argc, char **argv )
{
< a href = "tqapplication.html" > TQApplication< / a > a( argc, argv );
ListBoxCombo listboxcombo;
listboxcombo.< a href = "tqwidget.html#resize" > resize< / a > ( 400, 270 );
listboxcombo.< a href = "tqwidget.html#setCaption" > setCaption< / a > ( "TQt Example - Listboxes and Comboboxes" );
a.< a href = "tqapplication.html#setMainWidget" > setMainWidget< / a > ( & listboxcombo );
listboxcombo.< a href = "tqwidget.html#show" > show< / a > ();
return a.< a href = "tqapplication.html#exec" > exec< / a > ();
}
< / pre >
< p > See also < a href = "examples.html" > Examples< / a > .
<!-- eof -->
< p > < address > < hr > < div align = center >
< table width = 100% cellspacing = 0 border = 0 > < tr >
< td > Copyright © 2007
< a href = "troll.html" > Trolltech< / a > < td align = center > < a href = "trademarks.html" > Trademarks< / a >
< td align = right > < div align = right > TQt 3.3.8< / div >
< / table > < / div > < / address > < / body >
< / html >