开发者

QWebKit linkClicked signal never fires

import sys

fr开发者_运维技巧om 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_())

The linkClicked signal isn't working. The other signals work. Qt 4.6.2 on Win XP.


The link delegation policy must be set appropriately for the linkClicked signal to be emitted.

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜