Qt / PyQt:我如何对QWebView / QWebPage的“在新窗口中打开”操作?

时间:2013-02-11 00:33:08

标签: qt pyqt pyqt4 qwebkit qwebpage

如果我有一个开放的QWebView,我喜欢它的默认上下文菜单,其中“在新窗口中打开”作为链接选项。但是,当用户请求在新窗口中打开链接时,我似乎无法找到行动方式。覆盖QWebPage.createWindow方法似乎不起作用,因为当用户选择在新窗口中打开链接时,不会调用该方法。

有什么建议吗?我正在使用PyQt。

示例代码:

class LocalWebPage(QWebPage):
    def acceptNavigationRequest(self, webFrame, networkRequest, navigationType):
        print '*acceptNavigationRequest**',webFrame, networkRequest, navigationType
        return QWebPage.acceptNavigationRequest(self, webFrame, networkRequest, navigationType)

    def createWindow(self, windowType):
        print '--createWindow', windowType
        return QWebPage.createWindow(self, windowType)


class Browser(Ui_MainWindow, QMainWindow):
    def __init__(self, base, name):

        ...
        self.page = LocalWebPage()
        self.webViewMain = QWebView(self.centralwidget)
        self.webViewMain.setPage(self.page)
        ...

我在那里有调试打印,以验证是否没有调用createWindow。

2 个答案:

答案 0 :(得分:4)

您需要自己调用createWindow QWebView方法,例如重新实现triggerAction的{​​{1}},如下所示:

QWebPage

答案 1 :(得分:2)

hitTestContent的{​​{1}}方法中使用contextMenuEvent可以找到右键单击的链接:

QWebView