You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
167 lines
4.4 KiB
167 lines
4.4 KiB
/***************************************************************************
|
|
* $Id$
|
|
**
|
|
* Definition of something or other
|
|
**
|
|
* Created : 979899
|
|
**
|
|
* Copyright (C) 1997 by Trolltech 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.
|
|
**
|
|
****************************************************************************/
|
|
|
|
import org.kde.qt.*;
|
|
|
|
class Frame extends TQFrame
|
|
{
|
|
|
|
private TQPushButton button1;
|
|
private TQPushButton button2;
|
|
|
|
private TQFrame popup1;
|
|
private FancyPopup popup2;
|
|
|
|
Frame()
|
|
{
|
|
this(null, null);
|
|
}
|
|
|
|
Frame(TQWidget parent, String name)
|
|
{
|
|
super(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 ,null, 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 button1Clicked(){
|
|
popup1.move( mapToGlobal( button1.geometry().bottomLeft() ) );
|
|
popup1.show();
|
|
}
|
|
|
|
void button2Pressed(){
|
|
popup2.popup(button2);
|
|
}
|
|
|
|
class FancyPopup extends TQLabel
|
|
{
|
|
private TQWidget popupParent;
|
|
private int moves;
|
|
|
|
|
|
|
|
FancyPopup( TQWidget parent )
|
|
{
|
|
this(parent, null);
|
|
}
|
|
|
|
FancyPopup( TQWidget parent, String name )
|
|
{
|
|
super( parent, name, WType_Popup );
|
|
setFrameStyle( WinPanel|Raised );
|
|
setAlignment( AlignCenter );
|
|
resize(150,100);
|
|
moves = 0;
|
|
setMouseTracking( true );
|
|
}
|
|
|
|
protected void mouseMoveEvent( TQMouseEvent e){
|
|
moves++;
|
|
String s = e.pos().x() + "/" + e.pos().y();
|
|
if ((e.state() & TQMouseEvent.LeftButton) != 0)
|
|
s += " (down)";
|
|
setText(s);
|
|
}
|
|
|
|
protected void mouseReleaseEvent( TQMouseEvent e){
|
|
if (rect().contains( e.pos() ) || moves > 5)
|
|
close();
|
|
}
|
|
|
|
protected void closeEvent( TQCloseEvent e ){
|
|
e.accept();
|
|
moves = 0;
|
|
if (popupParent == null)
|
|
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 = new TQMouseEvent( TQEvent.MouseButtonRelease, new TQPoint(0,0), new TQPoint(0,0), TQMouseEvent.LeftButton, TQMouseEvent.NoButton);
|
|
TQApplication.sendEvent( popupParent, me );
|
|
}
|
|
|
|
void popup( TQWidget parent) {
|
|
popupParent = parent;
|
|
setText("Move the mouse!");
|
|
if (popupParent != null)
|
|
move( popupParent.mapToGlobal( popupParent.rect().bottomLeft() ) );
|
|
show();
|
|
}
|
|
|
|
}
|
|
|
|
|
|
public static void main(String[] args)
|
|
{
|
|
TQApplication a = new TQApplication( args );
|
|
|
|
Frame frame = new Frame();
|
|
frame.setCaption("Qt Example - Custom Popups");
|
|
a.setMainWidget(frame);
|
|
frame.show();
|
|
a.exec();
|
|
return;
|
|
}
|
|
|
|
static {
|
|
qtjava.initialize();
|
|
}
|
|
}
|