我用QWebView.load(QUrl(myurl))打开一个网页,网页获得一些输入并返回一个新的php生成页面.
如果在Firefox中执行,浏览器会自动打开一个新的选项卡/窗口以显示返回的页面.
如何告诉QWebView打开一个新的QWebview实例并加载返回的数据?
我正在www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qwebview.html查看QwebView文档......但没有快乐.
此类页面的示例:http: //www.iqfront.com/index.php?option = com_content&view = article&id = 5&Itemid = 4
谢谢你的任何想法.
根据我的理解,这是开发人员的工作,为点击的URL创建和打开新标签.您需要为QWebView :: linkClicked信号定义自定义插槽.只要用户单击链接并且页面的linkDelegationPolicy属性设置为委派指定URL的链接处理,就会发出此信号.在那里你可以创建一个新的QWebView实例,添加一个选项卡并在那里打开新的URL.以下是一个例子:
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()
希望这有帮助,问候