diff options
Diffstat (limited to 'examples/popup/popup.cpp')
-rw-r--r-- | examples/popup/popup.cpp | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/examples/popup/popup.cpp b/examples/popup/popup.cpp new file mode 100644 index 000000000..9a13fc8f9 --- /dev/null +++ b/examples/popup/popup.cpp @@ -0,0 +1,132 @@ +/**************************************************************************** +** +** 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 "popup.h" +#include <qapplication.h> +#include <qlayout.h> + +FancyPopup::FancyPopup( TQWidget* parent, const char* name ): + TQLabel( parent, name, WType_Popup ){ + setFrameStyle( WinPanel|Raised ); + setAlignment( AlignCenter ); + resize(150,100); + moves = 0; + setMouseTracking( TRUE ); +} + +void FancyPopup::mouseMoveEvent( TQMouseEvent * e){ + moves++; + TQString s; + s.sprintf("%d/%d", e->pos().x(), e->pos().y()); + if (e->state() & TQMouseEvent::LeftButton) + s += " (down)"; + setText(s); +} + +void FancyPopup::mouseReleaseEvent( TQMouseEvent * e){ + if (rect().contains( e->pos() ) || moves > 5) + close(); +} + +void FancyPopup::closeEvent( TQCloseEvent *e ){ + e->accept(); + moves = 0; + if (!popupParent) + return; + + // remember that we (as a popup) might recieve the mouse release + // event instead of the popupParent. This is due to the fact that + // the popupParent popped us up in its mousePressEvent handler. To + // avoid the button remaining in pressed state we simply send a + // faked mouse button release event to it. + TQMouseEvent me( TQEvent::MouseButtonRelease, TQPoint(0,0), TQPoint(0,0), TQMouseEvent::LeftButton, TQMouseEvent::NoButton); + TQApplication::sendEvent( popupParent, &me ); +} + +void FancyPopup::popup( TQWidget* parent) { + popupParent = parent; + setText("Move the mouse!"); + if (popupParent) + move( popupParent->mapToGlobal( popupParent->rect().bottomLeft() ) ); + show(); +} + + + + + + +Frame::Frame(TQWidget* parent, const char* name): TQFrame(parent, name){ + button1 = new TQPushButton("Simple Popup", this); + connect ( button1, SIGNAL( clicked() ), SLOT( button1Clicked() ) ); + button2 = new TQPushButton("Fancy Popup", this); + connect ( button2, SIGNAL( pressed() ), SLOT( button2Pressed() ) ); + + TQBoxLayout * l = new TQHBoxLayout( this ); + button1->setMaximumSize(button1->sizeHint()); + button2->setMaximumSize(button2->sizeHint()); + l->addWidget( button1 ); + l->addWidget( button2 ); + l->activate(); + +// button1->setGeometry(20,20,100,30); +// button2->setGeometry(140,20,100,30); + resize(270, 70); + + //create a very simple popup: it is just composed with other + //widget and will be shown after clicking on button1 + + popup1 = new TQFrame( this ,0, WType_Popup); + popup1->setFrameStyle( WinPanel|Raised ); + popup1->resize(150,100); + TQLineEdit *tmpE = new TQLineEdit( popup1 ); + connect( tmpE, SIGNAL( returnPressed() ), popup1, SLOT( hide() ) ); + tmpE->setGeometry(10,10, 130, 30); + tmpE->setFocus(); + TQPushButton *tmpB = new TQPushButton("Click me!", popup1); + connect( tmpB, SIGNAL( clicked() ), popup1, SLOT( close() ) ); + tmpB->setGeometry(10, 50, 130, 30); + + // the fancier version uses its own class. It will be shown when + // pressing button2, so they behavior is more like a modern menu + // or toolbar. + + popup2 = new FancyPopup( this ); + + // you might also add new widgets to the popup, just like you do + // it with any other widget. The next four lines (if not + // commented out) will for instance add a line edit widget. + +// tmpE = new TQLineEdit( popup2 ); +// tmpE->setFocus(); +// connect( tmpE, SIGNAL( returnPressed() ), popup2, SLOT( close() ) ); +// tmpE->setGeometry(10, 10, 130, 30); +} + + +void Frame::button1Clicked(){ + popup1->move( mapToGlobal( button1->geometry().bottomLeft() ) ); + popup1->show(); +} + +void Frame::button2Pressed(){ + popup2->popup(button2); +} + + +int main( int argc, char **argv ) +{ + TQApplication a(argc,argv); + + Frame frame; + frame.setCaption("TQt Example - Custom Popups"); + a.setMainWidget(&frame); + frame.show(); + return a.exec(); +} |