summaryrefslogtreecommitdiffstats
path: root/examples/tooltip/tooltip.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/tooltip/tooltip.cpp')
-rw-r--r--examples/tooltip/tooltip.cpp116
1 files changed, 116 insertions, 0 deletions
diff --git a/examples/tooltip/tooltip.cpp b/examples/tooltip/tooltip.cpp
new file mode 100644
index 000000000..628c4d94f
--- /dev/null
+++ b/examples/tooltip/tooltip.cpp
@@ -0,0 +1,116 @@
+/****************************************************************************
+**
+** Copyright (C) 1992-2008 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 "tooltip.h"
+#include <qapplication.h>
+#include <qpainter.h>
+#include <stdlib.h>
+
+
+DynamicTip::DynamicTip( TQWidget * parent )
+ : TQToolTip( parent )
+{
+ // no explicit initialization needed
+}
+
+
+void DynamicTip::maybeTip( const TQPoint &pos )
+{
+ if ( !parentWidget()->inherits( "TellMe" ) )
+ return;
+
+ TQRect r( ((TellMe*)parentWidget())->tip(pos) );
+ if ( !r.isValid() )
+ return;
+
+ TQString s;
+ s.sprintf( "position: %d,%d", r.center().x(), r.center().y() );
+ tip( r, s );
+}
+
+
+TellMe::TellMe( TQWidget * parent , const char * name )
+ : TQWidget( parent, name )
+{
+ setMinimumSize( 30, 30 );
+ r1 = randomRect();
+ r2 = randomRect();
+ r3 = randomRect();
+
+ t = new DynamicTip( this );
+
+ TQToolTip::add( this, r3, "this color is called red" ); // <- helpful
+}
+
+
+TellMe::~TellMe()
+{
+ delete t;
+ t = 0;
+}
+
+
+void TellMe::paintEvent( TQPaintEvent * e )
+{
+ TQPainter p( this );
+
+ // I try to be efficient here, and repaint only what's needed
+
+ if ( e->rect().intersects( r1 ) ) {
+ p.setBrush( blue );
+ p.drawRect( r1 );
+ }
+
+ if ( e->rect().intersects( r2 ) ) {
+ p.setBrush( blue );
+ p.drawRect( r2 );
+ }
+
+ if ( e->rect().intersects( r3 ) ) {
+ p.setBrush( red );
+ p.drawRect( r3 );
+ }
+}
+
+
+void TellMe::mousePressEvent( TQMouseEvent * e )
+{
+ if ( r1.contains( e->pos() ) )
+ r1 = randomRect();
+ if ( r2.contains( e->pos() ) )
+ r2 = randomRect();
+ repaint();
+}
+
+
+void TellMe::resizeEvent( TQResizeEvent * )
+{
+ if ( !rect().contains( r1 ) )
+ r1 = randomRect();
+ if ( !rect().contains( r2 ) )
+ r2 = randomRect();
+}
+
+
+TQRect TellMe::randomRect()
+{
+ return TQRect( ::rand() % (width() - 20), ::rand() % (height() - 20),
+ 20, 20 );
+}
+
+
+TQRect TellMe::tip( const TQPoint & p )
+{
+ if ( r1.contains( p ) )
+ return r1;
+ else if ( r2.contains( p ) )
+ return r2;
+ else
+ return TQRect( 0,0, -1,-1 );
+}