0

音量ボタンを作成しようとしています。クリックするとミュート/ミュート解除され、ホバーすると 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。それを行うためのより良い方法があれば教えてください。

4

1 に答える 1