[PyQt] QWebView in QGraphicsScene - drag and drop issue
Phil Thompson
phil at riverbankcomputing.com
Thu Apr 9 13:05:08 BST 2009
On Mon, 06 Apr 2009 14:09:01 -0500, Tom Batkiewicz
<tom.batkiewicz at priority5.com> wrote:
> Hello all,
>
> I get a hard crash with the following code if you drag/drop inside a
> QWebView that is being rendered inside of a QGraphicsScene.
> The trick is that it functions properly if you use addWidget() to
> directly put the widget into the scene, but if you create the proxy
> yourself and call setWidget() before adding the proxy to the scene you
> get the crash.
>
> ----
> import sys, os
> from PyQt4 import QtGui, QtCore, QtWebKit, QtOpenGL
>
> def main():
> app = QtGui.QApplication(sys.argv)
> browser = QtWebKit.QWebView()
> view = QtGui.QGraphicsView()
> view.setViewport(QtOpenGL.QGLWidget())
> scene = QtGui.QGraphicsScene()
> view.setScene(scene)
> browser.setUrl(QtCore.QUrl('http://www.google.com'))
>
> ## This fails
> proxy = QtGui.QGraphicsProxyWidget(None, QtCore.Qt.Widget)
> proxy.setWidget(browser)
> scene.addItem(proxy)
>
> ## This works
> #proxy = scene.addWidget(browser)
>
> view.show()
>
> app.exec_()
>
> sys.exit()
>
> if __name__ == '__main__':
> main()
> ----
>
> I wrote some duplicate code in C++ to test Qt directly but that code
> functioned without error (both code paths) hence I'm here.
> To duplicate, after running, click and drag the main google image or
> some text (any website or html will generate it as far as I can tell)
> and you should crash.
> If you switch the comments to remove the manually created proxy section
> and instead use addWidget() it should eliminate the crash.
>
> Subclassing QGraphicsProxyWidget is something I need to do so the
> addWidget() approach isn't going to work for me.
> If someone can duplicate this or point out what I'm doing wrong I'd
> appreciate it. Thanks!
I can't reproduce it with current snapshots.
Phil
More information about the PyQt
mailing list