【发布时间】:2021-08-16 19:53:26
【问题描述】:
无论鼠标是否位于禁用的 QToolButton 上方,我都希望能够在 QScrollArea 内使用鼠标滚动。文档提到禁用的小部件不会将鼠标事件传播给父母,我发现我需要安装事件过滤器来克服我遇到的这个问题。这就是我设法做到的程度。我认为事件过滤器是在检测到车轮事件时安装的,但我不确定下一步应该是什么:
from PySide import QtGui
from PySide.QtCore import *
import sys
app = QtGui.QApplication(sys.argv)
wid = QtGui.QWidget()
wid.resize(200, 200)
scroll = QtGui.QScrollArea()
scroll.setWidget(wid)
layout = QtGui.QVBoxLayout()
wid.setLayout(layout)
class installEvent(QObject):
def eventFilter(self, i_obj, i_event):
if i_event.type() == QEvent.Wheel:
print "QEvent: " + str(i_event.type())
buttonEnabled = QtGui.QToolButton()
layout.addWidget(buttonEnabled)
buttonDisabled = QtGui.QToolButton()
buttonDisabled.setEnabled(False)
layout.addWidget(buttonDisabled)
buttonDisabled.installEventFilter(installEvent(buttonDisabled))
scroll.show()
sys.exit(app.exec_())
【问题讨论】: