Home · All Classes · Modules  · QSS HELP  · QSS 案例 · VER007 HOME

QGraphicsProxyWidget Class Reference
[QtGui module]

该QGraphicsProxyWidget类提供了一个代理层嵌入QWidgetQGraphicsSceneMore...

继承QGraphicsWidget

Methods


Detailed Description

该QGraphicsProxyWidget类提供了一个代理层嵌入QWidgetQGraphicsScene

QGraphicsProxyWidget嵌入式播放器QWidget基于窗口小部件,例如,一个QPushButtonQFontComboBox或什至QFileDialog,成QGraphicsScene。转发两个对象之间的事件之间转换QWidget的整数为基础的几何形状和QGraphicsWidget的QREAL为基础的几何形状。 QGraphicsProxyWidget支持的所有核心功能QWidget包括标籤焦点,键盘输入,拖放,和弹出窗口。您还可以嵌入复杂的部件,例如,小部件与subwidgets 。

例如:

 int main(int argc, char **argv)
 {
     QApplication app(argc, argv);

     QTabWidget *tabWidget = new QTabWidget;

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

     QGraphicsView view(&scene);
     view.show();

     return app.exec();
 }

QGraphicsProxyWidget需要通过创建为每个弹出一个子代理自动弹出嵌入嵌入部件的孩子照顾。这意味着,当一个嵌入式QComboBox显示其弹出的列表中,一个新的QGraphicsProxyWidget会自动创建,嵌入弹出,正确定位它。这只有在弹出是嵌入式控件的子工程(例如QToolButton.setMenu( )要求QMenu实例是孩子QToolButton) 。

Embedding a Widget with QGraphicsProxyWidget

有两种方式来嵌入使用QGraphicsProxyWidget一个小部件。最常见的方法是将一个部件指针传递给QGraphicsScene.addWidget( )连同任何相关Qt.WindowFlags。这个函数返回一个指针,指向一个QGraphicsProxyWidget 。然后,您可以选择reparent或位置无论是代理,或嵌入部件本身。

例如,下面的代码片段中,我们嵌入一个组框入代理:

 QGroupBox *groupBox = new QGroupBox("Contact Details");
 QLabel *numberLabel = new QLabel("Telephone number");
 QLineEdit *numberEdit = new QLineEdit;

 QFormLayout *layout = new QFormLayout;
 layout->addRow(numberLabel, numberEdit);
 groupBox->setLayout(layout);

 QGraphicsScene scene;
 QGraphicsProxyWidget *proxy = scene.addWidget(groupBox);

 QGraphicsView view(&scene);
 view.show();

下面的图片是其内容利润率和内容获得RECT标记输出。

或者,您也可以通过创建一个新的QGraphicsProxyWidget项目开始,然后调用setWidget( )嵌入QWidget后来。该widget( )函数返回一个指向嵌入部件。 QGraphicsProxyWidget股份拥有权QWidget,所以如果两个部件被破坏,其他部件将被自动销毁。

Synchronizing Widget States

QGraphicsProxyWidget保持其状态与嵌入式部件同步。例如,如果代理是隐藏或禁用,嵌入式部件将被隐藏或禁用为好,反之亦然。当插件被嵌入通过调用addWidget () , QGraphicsProxyWidget副本从窗口小部件的状态到代理,并在这之后,两个将保持同步,其中可能的。默认情况下,当你嵌入一个widget到一个代理,无论是部件和代理将是可见的,因为一QGraphicsWidget创建时是可见的(你不必调用show())。如果你明确地隐藏嵌入部件,代理也将成为无形的。

例如:

 QGraphicsScene scene;

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

 edit->isVisible();  // returns true
 proxy->isVisible(); // also returns true

 edit->hide();

 edit->isVisible();  // returns false
 proxy->isVisible(); // also returns false

QGraphicsProxyWidget保持对称性以下国家:

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保存在一个特殊的状态,防止它干扰其他部件(包括嵌入式和不嵌入),而小部件嵌入嵌入部件。在这种状态下,小部件可以略微在从行为时,它不是嵌入不同。

Warning:该类提供了方便,当桥接QWidgets和QGraphicsItems ,它不应该被用于高性能的场景。


Method Documentation

QGraphicsProxyWidget.__init__ (self, QGraphicsItem parent = None, Qt.WindowFlags flags = 0)

parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。

构造一个新的QGraphicsProxy部件。parentwFlags被传递到QGraphicsItem的构造。

QGraphicsProxyWidget.contextMenuEvent (self, QGraphicsSceneContextMenuEvent event)

从重新实现QGraphicsItem.contextMenuEvent( ) 。

QGraphicsProxyWidget QGraphicsProxyWidget.createProxyForChildWidget (self, QWidget child)

创建一个代理部件给定的child包含在这个代理的小工具。

此功能使得它可以获取代理非顶层窗口部件。例如,你可以嵌入一个对话框,然后只是它的小部件一个转换。

如果部件已经嵌入,返回现有的代理部件。

此功能被引入Qt的4.5 。

See also newProxyWidget()和QGraphicsScene.addWidget( ) 。

QGraphicsProxyWidget.dragEnterEvent (self, QGraphicsSceneDragDropEvent event)

从重新实现QGraphicsItem.dragEnterEvent( ) 。

QGraphicsProxyWidget.dragLeaveEvent (self, QGraphicsSceneDragDropEvent event)

从重新实现QGraphicsItem.dragLeaveEvent( ) 。

QGraphicsProxyWidget.dragMoveEvent (self, QGraphicsSceneDragDropEvent event)

从重新实现QGraphicsItem.dragMoveEvent( ) 。

QGraphicsProxyWidget.dropEvent (self, QGraphicsSceneDragDropEvent event)

从重新实现QGraphicsItem.dropEvent( ) 。

bool QGraphicsProxyWidget.event (self, QEvent event)

从重新实现QObject.event( ) 。

bool QGraphicsProxyWidget.eventFilter (self, QObject object, QEvent event)

从重新实现QObject.eventFilter( ) 。

QGraphicsProxyWidget.focusInEvent (self, QFocusEvent event)

从重新实现QGraphicsItem.focusInEvent( ) 。

bool QGraphicsProxyWidget.focusNextPrevChild (self, bool next)

从重新实现QGraphicsWidget.focusNextPrevChild( ) 。

QGraphicsProxyWidget.focusOutEvent (self, QFocusEvent event)

从重新实现QGraphicsItem.focusOutEvent( ) 。

QGraphicsProxyWidget.grabMouseEvent (self, QEvent event)

从重新实现QGraphicsWidget.grabMouseEvent( ) 。

QGraphicsProxyWidget.hideEvent (self, QHideEvent event)

从重新实现QGraphicsWidget.hideEvent( ) 。

QGraphicsProxyWidget.hoverEnterEvent (self, QGraphicsSceneHoverEvent event)

从重新实现QGraphicsItem.hoverEnterEvent( ) 。

QGraphicsProxyWidget.hoverLeaveEvent (self, QGraphicsSceneHoverEvent event)

从重新实现QGraphicsItem.hoverLeaveEvent( ) 。

QGraphicsProxyWidget.hoverMoveEvent (self, QGraphicsSceneHoverEvent event)

从重新实现QGraphicsItem.hoverMoveEvent( ) 。

QVariant QGraphicsProxyWidget.itemChange (self, QGraphicsItem.GraphicsItemChange change, QVariant value)

从重新实现QGraphicsItem.itemChange( ) 。

QGraphicsProxyWidget.keyPressEvent (self, QKeyEvent event)

从重新实现QGraphicsItem.keyPressEvent( ) 。

QGraphicsProxyWidget.keyReleaseEvent (self, QKeyEvent event)

从重新实现QGraphicsItem.keyReleaseEvent( ) 。

QGraphicsProxyWidget.mouseDoubleClickEvent (self, QGraphicsSceneMouseEvent event)

从重新实现QGraphicsItem.mouseDoubleClickEvent( ) 。

QGraphicsProxyWidget.mouseMoveEvent (self, QGraphicsSceneMouseEvent event)

从重新实现QGraphicsItem.mouseMoveEvent( ) 。

QGraphicsProxyWidget.mousePressEvent (self, QGraphicsSceneMouseEvent event)

从重新实现QGraphicsItem.mousePressEvent( ) 。

QGraphicsProxyWidget.mouseReleaseEvent (self, QGraphicsSceneMouseEvent event)

从重新实现QGraphicsItem.mouseReleaseEvent( ) 。

QGraphicsProxyWidget QGraphicsProxyWidget.newProxyWidget (self, QWidget)

创建一个代理部件给定的child包含在这个代理的小工具。

你不应该直接调用此函数;使用QGraphicsProxyWidget.createProxyForChildWidget( )来代替。

此功能是假的虚拟插槽,你可以在你的子类重新实现,以控制如何将新的代理部件被创建。默认实现返回与创建一个代理QGraphicsProxyWidget( )构造函数与此代理插件作为父。

此功能被引入Qt的4.5 。

See also createProxyForChildWidget( ) 。

QGraphicsProxyWidget.paint (self, QPainter painter, QStyleOptionGraphicsItem option, QWidget widget)

从重新实现QGraphicsItem.paint( ) 。

QGraphicsProxyWidget.resizeEvent (self, QGraphicsSceneResizeEvent event)

从重新实现QGraphicsWidget.resizeEvent( ) 。

QGraphicsProxyWidget.setGeometry (self, QRectF rect)

从重新实现QGraphicsLayoutItem.setGeometry( ) 。

QGraphicsProxyWidget.setWidget (self, QWidget widget)

widget说法有它的所有权转移给Qt的。

Embeds widget这个代理部件。嵌入式构件必须完全位于内部或图形视图之外。你不能嵌入一个小部件,只要它是在UI别处可见,在相同的时间。

widget必须是一个顶级窗口部件,其母公司为0 。

当小部件是嵌入式的,它的状态(例如,可见,启用,几何形状,大小的提示)复制到代理服务器控件。如果嵌入式部件被明确隐藏或禁用,代理部件将成为明确地隐藏或禁用嵌入完成后。类文档有一个完整的概述共享状态。

QGraphicsProxyWidget的窗口标志确定是否小部件,嵌入后,将获得的窗口装饰与否。

在此之后函数返回,QGraphicsProxyWidget将保持其状态与同步widget只要有可能。

如果一个部件已经嵌入了这个代理,当这个函数被调用,即部件将首先自动未嵌入。传递0的widget争吵只会解除嵌入的控件,和当前嵌入式部件的所有权将被传递给调用者。嵌入每个子部件也将被嵌入和他们的代理部件损坏。

需要注意的是小部件与Qt.WA_PaintOnScreen部件属性集和部件的包装外部应用程序或控制器无法嵌入。例子是QGLWidgetQAxWidget

See also widget( ) 。

QGraphicsProxyWidget.showEvent (self, QShowEvent event)

从重新实现QGraphicsWidget.showEvent( ) 。

QSizeF QGraphicsProxyWidget.sizeHint (self, Qt.SizeHint which, QSizeF constraint = QSizeF())

从重新实现QGraphicsLayoutItem.sizeHint( ) 。

QRectF QGraphicsProxyWidget.subWidgetRect (self, QWidget widget)

返回矩形widget,它必须是一个后裔widget() ,或widget( )本身,这个代理项目的本地坐标。

如果没有部件被嵌入widget为0,或widget是不是嵌入部件的后裔,这个函数返回一个空QRectF

See also widget( ) 。

int QGraphicsProxyWidget.type (self)

从重新实现QGraphicsItem.type( ) 。

QGraphicsProxyWidget.ungrabMouseEvent (self, QEvent event)

从重新实现QGraphicsWidget.ungrabMouseEvent( ) 。

QGraphicsProxyWidget.wheelEvent (self, QGraphicsSceneWheelEvent event)

从重新实现QGraphicsItem.wheelEvent( ) 。

QWidget QGraphicsProxyWidget.widget (self)

返回一个指向嵌入的部件。

See also setWidget( ) 。




PyQt 4.10.3 for X11 Copyright © Riverbank Computing Ltd and Nokia 2012 Qt 4.8.5