summaryrefslogtreecommitdiffstats
path: root/examples/popup/popup.cpp
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-11-08 12:31:36 -0600
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-11-08 12:31:36 -0600
commitd796c9dd933ab96ec83b9a634feedd5d32e1ba3f (patch)
tree6e3dcca4f77e20ec8966c666aac7c35bd4704053 /examples/popup/popup.cpp
downloadtqt3-d796c9dd933ab96ec83b9a634feedd5d32e1ba3f.tar.gz
tqt3-d796c9dd933ab96ec83b9a634feedd5d32e1ba3f.zip
Test conversion to TQt3 from Qt3 8c6fc1f8e35fd264dd01c582ca5e7549b32ab731
Diffstat (limited to 'examples/popup/popup.cpp')
-rw-r--r--examples/popup/popup.cpp132
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();
+}