QWebView 无法正确识别触摸事件?



我找不到任何关于这个错误的参考…

我有一个小部件与QWebView,我正试图与触摸屏进行交互。每次我触摸屏幕,我得到的消息:

Got touch without getting TouchBegin for id ####

其中####是一个(看似任意的)四位数。下面是我的代码:

import sys
from PyQt4 import QtGui, QtCore, QtWebKit
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *
if __name__ == '__main__':
    app = QApplication(sys.argv)
    browser_window = QWebView()
    browser_window.load(QUrl("http://www.wikipedia.org"))
    browser_window.setAttribute(Qt.WA_AcceptTouchEvents)
    browser_window.show()
    app.exec_()

有人见过这个错误吗?或者类似的东西?

我试着安装一个事件过滤器,所以看看QWebView实际接收的是什么,尽管WA_AcceptTouchEvents标志,QWebView接收的唯一事件是鼠标事件。

我认为这个问题与Ubuntu的Qt 4.8补丁有关。我在这里发现了一个类似的问题:

https://gabrbedd.wordpress.com/2012/07/10/getting-multitouch-qt-on-ubuntu-12-04/

我认为切换到Qt5将修复它,我证实了PyQt。这可以工作(在安装一些python3-pyqt5的东西之后):

#!/usr/bin/python3
import sys
from PyQt5 import QtGui, QtCore, QtWebKit
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtWebKit import *
from PyQt5.QtWebKitWidgets import *
if __name__ == '__main__':
    app = QApplication(sys.argv)
    browser_window = QWebView()
    browser_window.load(QUrl("http://www.wikipedia.org"))
    browser_window.setAttribute(Qt.WA_AcceptTouchEvents)
    browser_window.show()
    app.exec_()

最新更新