首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QWebView自动标签

QWebView自动标签
EN

Stack Overflow用户
提问于 2011-01-22 12:33:40
回答 1查看 3.2K关注 0票数 2

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

如果在Firefox中执行,浏览器会自动打开一个新的选项卡/窗口来显示返回的页面。

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

我在www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qwebview.html上看过QwebView文档...但是没有joy。

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

谢谢你的点子。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-24 01:27:21

据我所知,这是开发人员的工作,创建和打开urls的新标签,clicked.You将需要为urls信号定义一个自定义插槽。只要用户单击链接,并且页面的linkDelegationPolicy属性设置为委托指定url的链接处理,就会发出此信号。在那里你可以创建一个新的QWebView实例,给它添加一个标签,然后在那里打开新的url。下面是一个示例:

代码语言:javascript
复制
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()

希望这能有所帮助,致敬

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4766186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档