QWebView Auto Tabs - PullRequest
       27

QWebView Auto Tabs

2 голосов
/ 22 января 2011

Я открываю веб-страницу с 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

Спасибо за любые идеи.

1 Ответ

6 голосов
/ 23 января 2011

Насколько я понимаю, это работа разработчика по созданию и открытию новых вкладок для кликов по 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()

надеюсь, это поможет, с уважением

...