音量ボタンを作成しようとしています。クリックするとミュート/ミュート解除され、ホバーすると popupQSlider
になるため、ユーザーは必要なレベルを設定できます。今、スライダーウィンドウを表示して非表示にすることで、これを達成しようとし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
。それを行うためのより良い方法があれば教えてください。