我用QWebView.load(QUrl(myurl))打开一个网页,该网页得到一些输入并返回一个新的php生成的页面。

如果在Firefox中执行,浏览器将自动打开一个新的标签/窗口以显示返回的页面。

如何告诉QWebView打开QWebview的新实例并加载返回的数据?

我当时在看QwebView文档
www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qwebview.html ...但并不高兴。

这样的页面示例:
http://www.iqfront.com/index.php?option=com_content&view=article&id=5&Itemid=4

感谢您的任何想法。

最佳答案

根据我的理解,这是开发人员的工作,为单击的URL创建和打开新标签。您需要为QWebView::linkClicked信号定义一个自定义插槽。每当用户单击链接并将页面的linkDelegationPolicy属性设置为委派指定URL的链接处理时,就会发出此信号。您可以在此处创建QWebView的新实例,并在其中添加标签并在其中打开新的网址。下面是一个示例:

import sys
from PyQt4 import QtGui, QtCore, QtWebKit

class MainForm(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(MainForm, self).__init__(parent)

        self.tabWidget = QtGui.QTabWidget(self)
        self.setCentralWidget(self.tabWidget)
        self.loadUrl(QtCore.QUrl('http://qt.nokia.com/'))

    def loadUrl(self, url):
        view = QtWebKit.QWebView()
        view.connect(view, QtCore.SIGNAL('loadFinished(bool)'), self.loadFinished)
        view.connect(view, QtCore.SIGNAL('linkClicked(const QUrl&)'), self.linkClicked)
        view.page().setLinkDelegationPolicy(QtWebKit.QWebPage.DelegateAllLinks)
        self.tabWidget.setCurrentIndex(self.tabWidget.addTab(view, 'loading...'))
        view.load(url)

    def loadFinished(self, ok):
        index = self.tabWidget.indexOf(self.sender())
        self.tabWidget.setTabText(index, self.sender().url().host())

    def linkClicked(self, url):
        self.loadUrl(url)

def main():
    app = QtGui.QApplication(sys.argv)
    form = MainForm()
    form.show()
    app.exec_()

if __name__ == '__main__':
    main()


希望这会有所帮助,问候

关于qt - QWebView自动选项卡,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4766186/

10-11 19:37