2011-03-21 4 views
3
import sys 

from PyQt4.QtGui import * 
from PyQt4.QtCore import * 
from PyQt4.QtWebKit import QWebView 

app = QApplication(sys.argv) 
web_view = QWebView() 
def url_changed(url): print 'url changed: ', url 
def link_clicked(url): print 'link clicked: ', url 
def load_started(): print 'load started' 
def load_finished(ok): print 'load finished, ok: ', ok 
web_view.connect(web_view, SIGNAL("urlChanged(const QUrl&)"), url_changed) 
web_view.connect(web_view, SIGNAL("linkClicked(const QUrl&)"), link_clicked) 
web_view.connect(web_view, SIGNAL('loadStarted()'), load_started) 
web_view.connect(web_view, SIGNAL('loadFinished(bool)'), load_finished) 
web_view.load(QUrl('http://google.com')) 
web_view.show() 
sys.exit(app.exec_()) 

linkClicked 신호가 작동하지 않습니다. 다른 신호들이 작동합니다. Win XP에서 Qt 4.6.2.QWebKit link 클릭 신호가 발생하지 않음

답변

7

linkClicked 신호를 내보내려면 link delegation policy을 적절하게 설정해야합니다.

import sys 

from PyQt4.QtGui import * 
from PyQt4.QtCore import * 
from PyQt4.QtWebKit import QWebPage, QWebView 

app = QApplication(sys.argv) 
web_view = QWebView() 
web_view.page().setLinkDelegationPolicy(QWebPage.DelegateAllLinks) 
def url_changed(url): print 'url changed: ', url 
def link_clicked(url): print 'link clicked: ', url 
def load_started(): print 'load started' 
def load_finished(ok): print 'load finished, ok: ', ok 
web_view.connect(web_view, SIGNAL("urlChanged(const QUrl&)"), url_changed) 
web_view.connect(web_view, SIGNAL("linkClicked(const QUrl&)"), link_clicked) 
web_view.connect(web_view, SIGNAL('loadStarted()'), load_started) 
web_view.connect(web_view, SIGNAL('loadFinished(bool)'), load_finished) 
web_view.load(QUrl('http://google.com')) 
web_view.show() 
sys.exit(app.exec_()) 
+0

아, 좋습니다. 감사. –

관련 문제