pyqtgraph отключает прокрутку родительского виджета при наведении курсора мыши на / используется из подвиджета - PullRequest
0 голосов
/ 21 июня 2019

У меня есть QTreeWidget, который я заполнил двумя подвиджетами: pyqtgraph.TableWidget() и pyqtgraph.ImageView(). Теперь проблема в том, что когда моя мышь находится в пределах ImageView, она используется для применения различных действий (например, увеличение / уменьшение масштаба и т. Д.), Но это влияет на прокрутку QTreeWidget. То, что я хотел бы сделать, это отключить прокрутку QTreeWidget, когда моя мышь находится в пределах (зависания?) Границы ImageView и используется для функциональности ImageView. Это возможно?

Вот фрагмент кода моей структуры виджета:

# Tree
self.tree_widget = QtWidgets.QTreeWidget()
self.tree_widget.setHeaderLabels(["Key", "Value", "Image"])
root_item = QtWidgets.QTreeWidgetItem(["Test Item"])
self.tree_widget.addTopLevelItem(root_item)

# Data
val=numpy.random.normal(size=(32, 24, 3))

# Sub-widgets
tableWidget = pyqtgraph.TableWidget(sortable=False)
tableWidget.setData(val)

im1 = pyqtgraph.ImageView()
im1.setImage(val.T)

self.tree_widget.setItemWidget(root_item, 1, tableWidget)
self.tree_widget.setItemWidget(root_item, 2, im1)

1 Ответ

1 голос
/ 22 июня 2019

Не очень понятно, с какими событиями мыши у вас возникают проблемы, так как единственное, о чем я могу думать, это события колеса.

Если это так, просто создайте подкласс ImageViewer и установите его как принятыйвсе события колеса, которые он получает: таким образом, ImageViewer будет работать должным образом, но события колеса не будут распространяться на родительский виджет (дерево):

class MyImageView(pyqtgraph.ImageView):
    def wheelEvent(self, event):
        event.accept()

    # you can do the same with other mouse events, if that's your issue too
    def mousePressEvent(self, event):
        event.accept()

class YourWidget(QtWidgets.QWidget):
    def __init__(self, *args, **kwargs):
        QtWidgets.QWidget.__init__(self, *args, **kwargs)
        [...]
        im1 = MyImageView()

...