/**************************************************************************** ** Form implementation generated from reading ui file 'hello.ui' ** ** Created: Wed Jun 23 18:02:36 2004 ** by: The User Interface Compiler (uic) ** ** WARNING! All changes made in this file will be lost! ****************************************************************************/ #include "hello.h"
#include <qtopia/qpeapplication.h> #ifdef QWS #include <qtopia/qcopenvelope_qws.h> #endif #include <qtopia/config.h> #include <qtopia/timestring.h> #include <qtopia/alarmserver.h> #include <qtopia/sound.h> #include <qtopia/resource.h>
#include <qlayout.h> #include <qvariant.h> #include <qtooltip.h> #include <qwhatsthis.h> #include <qpushbutton.h> #include <qtimer.h> #include <qpainter.h> #include <qpixmap.h> #include <qwhatsthis.h>
/* * Constructs a Hello which is a child of 'parent', with the * name 'name' and widget flags set to 'f' */ Hello::Hello( QWidget* parent, const char* name, WFlags fl ) : QWidget( parent, name, fl ) { if ( !name ) setName( "Hello" ); resize( 240, 320 ); setWFlags(fl | Qt::WStyle_ContextHelp); setMinimumSize( QSize( 240, 320 ) ); setMaximumSize( QSize( 240, 320 ) ); setSizeIncrement( QSize( 240, 320 ) ); setBaseSize( QSize( 240, 320 ) ); QPalette pal; QColorGroup cg; cg.setColor( QColorGroup::Foreground, black ); cg.setColor( QColorGroup::Button, QColor( 192, 192, 192) ); cg.setColor( QColorGroup::Light, white ); cg.setColor( QColorGroup::Midlight, QColor( 223, 223, 223) ); cg.setColor( QColorGroup::Dark, QColor( 96, 96, 96) ); cg.setColor( QColorGroup::Mid, QColor( 128, 128, 128) ); cg.setColor( QColorGroup::Text, black ); cg.setColor( QColorGroup::BrightText, white ); cg.setColor( QColorGroup::ButtonText, black ); cg.setColor( QColorGroup::Base, white ); cg.setColor( QColorGroup::Background, white ); cg.setColor( QColorGroup::Shadow, black ); cg.setColor( QColorGroup::Highlight, black ); cg.setColor( QColorGroup::HighlightedText, white ); pal.setActive( cg ); cg.setColor( QColorGroup::Foreground, black ); cg.setColor( QColorGroup::Button, QColor( 192, 192, 192) ); cg.setColor( QColorGroup::Light, white ); cg.setColor( QColorGroup::Midlight, QColor( 220, 220, 220) ); cg.setColor( QColorGroup::Dark, QColor( 96, 96, 96) ); cg.setColor( QColorGroup::Mid, QColor( 128, 128, 128) ); cg.setColor( QColorGroup::Text, black ); cg.setColor( QColorGroup::BrightText, white ); cg.setColor( QColorGroup::ButtonText, black ); cg.setColor( QColorGroup::Base, white ); cg.setColor( QColorGroup::Background, white ); cg.setColor( QColorGroup::Shadow, black ); cg.setColor( QColorGroup::Highlight, black ); cg.setColor( QColorGroup::HighlightedText, white ); pal.setInactive( cg ); cg.setColor( QColorGroup::Foreground, QColor( 128, 128, 128) ); cg.setColor( QColorGroup::Button, QColor( 192, 192, 192) ); cg.setColor( QColorGroup::Light, white ); cg.setColor( QColorGroup::Midlight, QColor( 220, 220, 220) ); cg.setColor( QColorGroup::Dark, QColor( 96, 96, 96) ); cg.setColor( QColorGroup::Mid, QColor( 128, 128, 128) ); cg.setColor( QColorGroup::Text, black ); cg.setColor( QColorGroup::BrightText, white ); cg.setColor( QColorGroup::ButtonText, QColor( 128, 128, 128) ); cg.setColor( QColorGroup::Base, white ); cg.setColor( QColorGroup::Background, white ); cg.setColor( QColorGroup::Shadow, black ); cg.setColor( QColorGroup::Highlight, black ); cg.setColor( QColorGroup::HighlightedText, white ); pal.setDisabled( cg ); setPalette( pal ); QFont f( font() ); f.setFamily( "adobe-helvetica" ); f.setPointSize( 29 ); f.setBold( TRUE ); setFont( f ); setCaption( tr( "" ) );
//手動添加的代碼
t = "Hello,World"; b = 0; QTimer *timer = new QTimer(this); connect( timer, SIGNAL(timeout()), SLOT(animate()) ); timer->start( 40 ); QWhatsThis::add( this, tr( "this is hello, world sample." ) ); }
/* * Destroys the object and frees any allocated resources */ Hello::~Hello() { // no need to delete child widgets, Qt does it all for us
} /* This private slot is called each time the timer fires. */
//以下是手動添加的代碼
void Hello::animate() { b = (b + 1) & 15; repaint( FALSE ); }
/* Handles mouse button release events for the Hello widget.
We emit the clicked() signal when the mouse is released inside the widget. */
void Hello::mouseReleaseEvent( QMouseEvent *e ) { if ( rect().contains( e->pos() ) ) emit clicked(); }
/* Handles paint events for the Hello widget.
Flicker-free update. The text is first drawn in the pixmap and the pixmap is then blt'ed to the screen. */
void Hello::paintEvent( QPaintEvent * ) { static int sin_tbl[16] = { 0, 38, 71, 92, 100, 92, 71, 38, 0, -38, -71, -92, -100, -92, -71, -38};
if ( t.isEmpty() ) return;
// 1: Compute some sizes, positions etc.
QFontMetrics fm = fontMetrics(); int w = fm.width(t) + 20; int h = fm.height() * 2; int pmx = width()/2 - w/2; int pmy = height()/2 - h/2;
// 2: Create the pixmap and fill it with the widget's background
QPixmap pm( w, h ); pm.fill( this, pmx, pmy );
// 3: Paint the pixmap. Cool wave effect
QPainter p; int x = 10; int y = h/2 + fm.descent(); int i = 0; p.begin( &pm ); p.setFont( font() ); while ( !t[i].isNull() ) { int i16 = (b+i) & 15; p.setPen( QColor((15-i16)*16,255,255,QColor::Hsv) ); p.drawText( x, y-sin_tbl[i16]*h/800, t.mid(i,1), 1 ); x += fm.width( t[i] ); i++; } p.end();
// 4: Copy the pixmap to the Hello widget
bitBlt( this, pmx, pmy, &pm ); }
main.cpp
|