Overview  Package   Class  Tree  Deprecated  Index  Help 
 PREV CLASS   NEXT CLASS FRAMES    NO FRAMES    
SUMMARY: 
java.lang.Object
  extended by com.trolltech.qt.internal.QSignalEmitterInternal
      extended by com.trolltech.qt.QSignalEmitter
          extended by com.trolltech.qt.QtJambiObject
              extended by com.trolltech.qt.core.QObject
                  extended by com.trolltech.qt.gui.QGraphicsWidget
                      extended by com.trolltech.qt.gui.QGraphicsProxyWidget
All Implemented Interfaces:
QGraphicsItemInterface, QGraphicsLayoutItemInterface, QtJambiInterface

public class QGraphicsProxyWidget
extends QGraphicsWidget

The QGraphicsProxyWidget class provides a proxy layer for embedding a QWidget in a QGraphicsScene. QGraphicsProxyWidget embeds QWidget-based widgets, for example, a QPushButton, QFontComboBox, or even QFileDialog, into QGraphicsScene. It forwards events between the two objects and translates between QWidget's integer-based geometry and QGraphicsWidget's qreal-based geometry. QGraphicsProxyWidget supports all core features of QWidget, including tab focus, keyboard input, Drag & Drop, and popups. You can also embed complex widgets, e.g., widgets with subwidgets.

Example:

    public static void main(String args[]) {
        QApplication.initialize(args);
        QTabWidget tabWidget = new QTabWidget();

        QGraphicsScene scene = new QGraphicsScene();
        QGraphicsProxyWidget proxy = scene.addWidget(tabWidget);

        QGraphicsView view = new QGraphicsView(scene);
        view.show();

        QApplication.exec();
    }
QGraphicsProxyWidget takes care of automatically embedding popup children of embedded widgets through creating a child proxy for each popup. This means that when an embedded QComboBox shows its popup list, a new QGraphicsProxyWidget is created automatically, embedding the popup, and positioning it correctly.

Embedding a Widget with QGraphicsProxyWidget

There are two ways to embed a widget using QGraphicsProxyWidget. The most common way is to pass a widget pointer to
QGraphicsScene::addWidget() together with any relevant Qt::WindowFlags. This function returns a pointer to a QGraphicsProxyWidget. You can then choose to reparent or position either the proxy, or the embedded widget itself.

For example, in the code snippet below, we embed a group box into the proxy:

        QGraphicsScene scene = new QGraphicsScene();

        QLineEdit edit = new QLineEdit();
        QGraphicsProxyWidget proxy = scene.addWidget(edit);

        edit.isVisible();  // returns false, as QWidget is hidden by default
        proxy.isVisible(); // also returns false

        edit.show();

        edit.isVisible(); // returns true
        proxy.isVisible(); // returns true
The image below is the output obtained with its contents margin and contents rect labeled.

Alternatively, you can start by creating a new QGraphicsProxyWidget item, and then call setWidget() to embed a QWidget later. The widget() function returns a pointer to the embedded widget. QGraphicsProxyWidget shares ownership with QWidget, so if either of the two widgets are destroyed, the other widget will be automatically destroyed as well.

Synchronizing Widget States

QGraphicsProxyWidget keeps its state in sync with the embedded widget. For example, if the proxy is hidden or disabled, the embedded widget will be hidden or disabled as well, and vice versa. When the widget is embedded by calling addWidget(), QGraphicsProxyWidget copies the state from the widget into the proxy, and after that, the two will stay synchronized where possible. By default, when you embed a widget into a proxy, both the widget and the proxy will be visible because a
QGraphicsWidget is visible when created (you do not have to call show()). If you explicitly hide the embedded widget, the proxy will also become invisible.

Example:Error parsing snippet. QGraphicsProxyWidget maintains symmetry for the following states:

QWidget state
QGraphicsProxyWidget state
Notes
QWidget::enabled QGraphicsProxyWidget::enabled
QWidget::visible QGraphicsProxyWidget::visible The explicit state is also symmetric.
QWidget::geometry QGraphicsProxyWidget::geometry Geometry is only guaranteed to be symmetric while the embedded widget is visible.
QWidget::layoutDirection QGraphicsProxyWidget::layoutDirection
QWidget::style QGraphicsProxyWidget::style
QWidget::palette QGraphicsProxyWidget::palette
QWidget::font QGraphicsProxyWidget::font
QWidget::cursor QGraphicsProxyWidget::cursor The embedded widget overrides the proxy widget cursor. The proxy cursor changes depending on which embedded subwidget is currently under the mouse.
QWidget::sizeHint() QGraphicsProxyWidget::sizeHint() All size hint functionality from the embedded widget is forwarded by the proxy.
QWidget::getContentsMargins() QGraphicsProxyWidget::getContentsMargins() Updated once by setWidget().
QWidget::windowTitle QGraphicsProxyWidget::windowTitle Updated once by setWidget().
Note:QGraphicsScene keeps the embedded widget in a special state that prevents it from disturbing other widgets (both embedded and not embedded) while the widget is embedded. In this state, the widget may differ slightly in behavior from when it is not embedded.

See also:
QGraphicsScene::addWidget(), and QGraphicsWidget.


Constructor Detail

QGraphicsProxyWidget

public QGraphicsProxyWidget(QGraphicsItemInterface parent,
                            Qt.WindowType[] wFlags)
This is an overloaded method provided for convenience.


QGraphicsProxyWidget

public QGraphicsProxyWidget(QGraphicsItemInterface parent)
Constructs a new QGraphicsProxy widget. parent and wFlags are passed to QGraphicsItem's constructor.


QGraphicsProxyWidget

public QGraphicsProxyWidget()
Constructs a new QGraphicsProxy widget. parent and wFlags are passed to QGraphicsItem's constructor.


QGraphicsProxyWidget

public QGraphicsProxyWidget(QGraphicsItemInterface parent,
                            Qt.WindowFlags wFlags)
Constructs a new QGraphicsProxy widget. parent and wFlags are passed to QGraphicsItem's constructor.


Overview  Package   Class  Tree  Deprecated  Index  Help 
 PREV CLASS   NEXT CLASS FRAMES    NO FRAMES    
SUMMARY: