pyqtgraph在子小部件上悬停/使用鼠标时禁用父小部件滚动

时间:2019-06-21 16:28:15

标签: python scroll pyqt pyqt5 pyqtgraph

我有一个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 个答案:

答案 0 :(得分:1)

不清楚发生什么鼠标事件,因为我唯一想到的就是滚轮事件。

在这种情况下,只需创建ImageViewer的子类并将接收到的所有滚轮事件设置为已接受:这样,ImageViewer将按预期工作,但滚轮事件不会传播到父窗口小部件(树):

it('should create', () => {
  expect(component).toBeTruthy();
});