2011-01-22 4 views
2

QWebView.load (QUrl (myurl))로 웹 페이지를 열면 웹 페이지가 일부 입력을 받아 새로운 PHP 생성 페이지를 반환합니다.QWebView 자동 탭

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

감사합니다.

답변

6

제 생각에 클릭 한 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() 

희망, 안부

+0

감사합니다! 이 문제를 해결하기위한 시작입니다. – Coldmera

관련 문제