Widgets Demo
This example creates a window with many Qt widgets and two custom
example widgets; aclock and dclock.
It also shows how to connect widget signals to internal slots.
/****************************************************************************
** $Id: widgets.cpp,v 2.46 1998/07/08 13:22:45 aavit Exp $
**
** Copyright (C) 1992-1998 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 <qdialog.h>
#include <qmessagebox.h>
#include <qpixmap.h>
#include <qmovie.h>
#include <qlayout.h>
#include <qapplication.h>
#include <qkeycode.h>
// Standard Qt widgets
#include <qmenubar.h>
#include <qpopupmenu.h>
#include <qbuttongroup.h>
#include <qcheckbox.h>
#include <qcombobox.h>
#include <qframe.h>
#include <qgroupbox.h>
#include <qlabel.h>
#include <qlcdnumber.h>
#include <qmultilinedit.h>
#include <qlineedit.h>
#include <qlistbox.h>
#include <qpushbutton.h>
#include <qradiobutton.h>
#include <qslider.h>
#include <qtooltip.h>
#include <qspinbox.h>
// Some sample widgets
#include "../aclock/aclock.h"
#include "../dclock/dclock.h"
#define MOVIEFILENAME "trolltech.gif"
//
// WidgetView contains lots of Qt widgets.
//
class WidgetView : public QWidget
{
Q_OBJECT
public:
WidgetView( QWidget *parent=0, const char *name=0 );
public slots:
void setStatus(const char*);
private slots:
void button1Clicked();
void checkBoxClicked( int );
void radioButtonClicked( int );
void sliderValueChanged( int );
void listBoxItemSelected( int );
void comboBoxItemActivated( int );
void edComboBoxItemActivated( const char * );
void lineEditTextChanged( const char * );
void movieStatus( int );
void movieUpdate( const QRect& );
void spinBoxValueChanged( const char * );
private:
bool eventFilter( QObject *, QEvent * );
QLabel *msg;
QCheckBox *cb[3];
QLabel *movielabel;
QMovie movie;
};
//
// Construct the WidgetView with buttons
//
WidgetView::WidgetView( QWidget *parent, const char *name )
: QWidget( parent, name )
{
QColor col;
// Set the window caption/title
setCaption( "Qt Widgets Demo Application" );
// Install an application-global event filter
qApp->installEventFilter( this );
// Create a layout to position the widgets
QVBoxLayout *topLayout = new QVBoxLayout( this, 10 );
// Create a grid layout to hold most of the widgets
QGridLayout *grid = new QGridLayout( 6, 3 );
// This layout will get all of the stretch
topLayout->addLayout( grid, 10 );
// Create a menubar
QMenuBar *menubar = new QMenuBar( this );
menubar->setSeparator( QMenuBar::InWindowsStyle );
// Create an easter egg
QToolTip::add( menubar, QRect( 0, 0, 2, 2 ), "easter egg" );
QPopupMenu* popup;
popup = new QPopupMenu;
int id;
id = popup->insertItem( "&New" );
popup->setItemEnabled( id, FALSE );
id = popup->insertItem( "&Open" );
popup->setItemEnabled( id, FALSE );
popup->insertSeparator();
popup->insertItem( "&Quit", qApp, SLOT(quit()), CTRL+Key_Q );
menubar->insertItem( "&File", popup );
// Must tell the layout about a menubar in a widget
topLayout->setMenuBar( menubar );
// Create an analog and a digital clock
AnalogClock *aclock = new AnalogClock( this );
DigitalClock *dclock = new DigitalClock( this );
dclock->setMaximumWidth(200);
grid->addWidget( aclock, 0, 2 );
grid->addWidget( dclock, 1, 2 );
// Give the dclock widget a blue palette
col.setRgb( 0xaa, 0xbe, 0xff );
dclock->setPalette( QPalette( col ) );
// make tool tips for both of them
QToolTip::add( aclock, "custom widget: analog clock" );
QToolTip::add( dclock, "custom widget: digital clock" );
// Create a push button.
QPushButton *pb;
pb = new QPushButton( this, "button1" ); // create button 1
pb->setText( "Push button 1" );
pb->setFixedHeight( pb->sizeHint().height() );
grid->addWidget( pb, 0, 0, AlignVCenter );
connect( pb, SIGNAL(clicked()), SLOT(button1Clicked()) );
QToolTip::add( pb, "push button 1" );
QPixmap pm;
bool pix = pm.load("qt.bmp"); // load pixmap for button 2
if ( !pix ) {
QMessageBox::information( 0, "Qt Widgets Example",
"Could not load the file \"qt.bmp\", which\n"
"contains an icon used...\n\n"
"The text \"line 42\" will be substituted.",
QMessageBox::Ok + QMessageBox::Default );
}
// Create a label containing a QMovie
movielabel = new QLabel( this, "label0" );
movie = QMovie( MOVIEFILENAME );
movie.connectStatus(this, SLOT(movieStatus(int)));
movie.connectUpdate(this, SLOT(movieUpdate(const QRect&)));
movielabel->setFrameStyle( QFrame::Box | QFrame::Plain );
movielabel->setMovie( movie );
movielabel->setMargin( 0 );
movielabel->setFixedSize( 128+movielabel->frameWidth()*2,
64+movielabel->frameWidth()*2 );
grid->addWidget( movielabel, 0, 1, AlignCenter );
QToolTip::add( movielabel, "movie" );
// Create a group of check boxes
QButtonGroup *bg = new QButtonGroup( this, "checkGroup" );
bg->setTitle( "Check Boxes" );
grid->addWidget( bg, 1, 0 );
// Create a layout for the check boxes
QVBoxLayout *vbox = new QVBoxLayout(bg, 10);
vbox->addSpacing( bg->fontMetrics().height() );
cb[0] = new QCheckBox( bg );
cb[0]->setText( "Read" );
vbox->addWidget( cb[0] );
cb[0]->setMinimumSize( cb[0]->sizeHint() );
cb[1] = new QCheckBox( bg );
cb[1]->setText( "Write" );
vbox->addWidget( cb[1] );
cb[1]->setMinimumSize( cb[1]->sizeHint() );
cb[2] = new QCheckBox( bg );
cb[2]->setText( "Execute" );
cb[2]->setMinimumSize( cb[2]->sizeHint() );
vbox->addWidget( cb[2] );
bg->setMinimumSize( bg->childrenRect().size() );
vbox->activate();
connect( bg, SIGNAL(clicked(int)), SLOT(checkBoxClicked(int)) );
QToolTip::add( cb[0], "check box 1" );
QToolTip::add( cb[1], "check box 2" );
QToolTip::add( cb[2], "check box 3" );
// Create a group of radio buttons
QRadioButton *rb;
bg = new QButtonGroup( this, "radioGroup" );
bg->setTitle( "Radio buttons" );
grid->addWidget( bg, 1, 1 );
// Create a layout for the radio buttons
vbox = new QVBoxLayout(bg, 10);
vbox->addSpacing( bg->fontMetrics().height() );
rb = new QRadioButton( bg );
rb->setText( "&AM" );
rb->setChecked( TRUE );
vbox->addWidget(rb);
rb->setMinimumSize( rb->sizeHint() );
QToolTip::add( rb, "radio button 1" );
rb = new QRadioButton( bg );
rb->setText( "&FM" );
vbox->addWidget(rb);
rb->setMinimumSize( rb->sizeHint() );
QToolTip::add( rb, "radio button 2" );
rb = new QRadioButton( bg );
rb->setText( "&Short Wave" );
vbox->addWidget(rb);
rb->setMinimumSize( rb->sizeHint() );
vbox->activate();
connect( bg, SIGNAL(clicked(int)), SLOT(radioButtonClicked(int)) );
QToolTip::add( rb, "radio button 3" );
// Create a list box
QListBox *lb = new QListBox( this, "listBox" );
for ( int i=0; i<100; i++ ) { // fill list box
QString str;
str.sprintf( "line %d", i );
if ( i == 42 && pix )
lb->insertItem( pm );
else
lb->insertItem( str );
}
grid->addMultiCellWidget( lb, 2, 4, 0, 0 );
connect( lb, SIGNAL(selected(int)), SLOT(listBoxItemSelected(int)) );
QToolTip::add( lb, "list box" );
vbox = new QVBoxLayout(8);
grid->addLayout( vbox, 2, 1 );
// Create a slider
QSlider *sb = new QSlider( 0, 300, 1, 100, QSlider::Horizontal,
this, "Slider" );
sb->setTickmarks( QSlider::Below );
sb->setTickInterval( 10 );
sb->setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">setFocusPolicy( QWidget::Taby">