我正在尝试制作音量按钮,单击时应静音/取消静音,悬停时应弹出QSlider
,因此用户可以设置他想要的任何级别。现在我试图通过在其中显示滑块窗口enterEvent
并将其隐藏来实现这一点leaveEvent
:
class VolumeButton(QToolButton):
def __init__(self, parent=None):
super().__init__(parent)
self.setIcon(volumeicon)
self.slider = QSlider()
self.slider.setWindowFlags(Qt.FramelessWindowHint)
self.slider.setWindowModality(Qt.NonModal)
def enterEvent(self, event):
self.slider.move(self.mapToGlobal(self.rect().topLeft()))
self.slider.show()
def leaveEvent(self, event):
self.slider.hide()
问题是它mapToGlobal
似乎以某种方式连接enterEvent
并且它创建了递归,但是没有mapToGlobal
我不能将滑块放在正确的位置。我不确定这是否是实现预期QToolButton
结果FramelessWindow
的正确小部件,因此请告诉我是否有更好的方法来做到这一点。