我用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
感谢任何想法。
答案 0 :(得分:6)
根据我的理解,这是开发人员的工作,即为点击的网址创建和打开新标签。您需要为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()
希望这有帮助,尊重