为什么Qt在MouseEvent时没有为TabletEvent抓住鼠标

时间:2018-07-09 13:14:22

标签: qt pyside

使用以下最少的代码,我用鼠标或wacom数位板进行相同的操作: “在红色矩形上单击左键,在不释放的情况下移动到蓝色矩形,然后单击中间(不释放左键),然后释放左键”

使用“我的鼠标”,我得到以下结果(逻辑,我想要!):

  • 按红色
  • 按红色
  • 释放红色
  • 释放红色

使用Wacom数位板,我得到了这个结果(不好!我要和鼠标一样!)

  • 按红色
  • 按蓝色
  • 释放蓝色
  • 释放蓝色

看来Qt(版本4.8)不太像它,但它并不能成为平板电脑的主角。你知道为什么吗 ?并提出一些避免该问题的建议(我不希望在小部件中手动调用grabMouse,因为在我的实际应用中,我拥有更多的小部件,而Qt则说,我们自己调用grabMouse不是一个好主意(当我看到我这样做时产生的错误))

from PySide.QtGui import *
from PySide.QtCore import *

app = QApplication()


class SecondaryWidget(QLabel):
    def __init__(self, name, color, parent=None, flags=0):
        super(SecondaryWidget, self).__init__(name, parent)
        self.setObjectName(name)
        self.setStyleSheet('background-color:' + color + ';')


    def mousePressEvent(self, event):
        super(SecondaryWidget, self).mousePressEvent(event)
        print ("Press", self.objectName())

    def mouseReleaseEvent(self, event):
        super(SecondaryWidget, self).mouseReleaseEvent(event)
        print ("Release", self.objectName())


class MainWidget(QWidget):
    def __init__(self):
        super(MainWidget, self).__init__()

        self.setFixedSize(500, 500)

        layout = QVBoxLayout()
        a = SecondaryWidget('red', 'red')
        layout.addWidget(a)

        b = SecondaryWidget('blue', 'blue')
        layout.addWidget(b)

        self.setLayout(layout)


w = MainWidget()
w.show()

app.exec_()

0 个答案:

没有答案