QWebView无法正确识别TouchEvents?

时间:2014-08-11 20:36:40

标签: qt4 pyqt4 qwebkit

我无法在任何地方找到任何对此错误的引用......

我有一个带有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仅接收的事件是 mouse 事件。

1 个答案:

答案 0 :(得分:0)

我认为这个问题特别适用于Utntu的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_()