📌  相关文章
📜  PyQt5 QSpinBox – 当鼠标悬停在它上面时添加边框(1)

📅  最后修改于: 2023-12-03 15:33:53.893000             🧑  作者: Mango

PyQt5 QSpinBox – 当鼠标悬停在它上面时添加边框

介绍

在PyQt5中,QSpinBox是一个标准的值选择器控件,可用于在可选范围内选择数字。这个小部件有许多属性和信号,可以根据需求进行设置和使用。本文将介绍如何在QSpinBox上添加鼠标悬停时的边框。

实现

我们可以通过QHBoxLayout和QSpinBox来构建简单的应用程序,并在鼠标悬停在控件上方时添加边框。我们需要重写QSpinBox的enterEvent()和leaveEvent()方法,并在这些方法中设置QSpinBox的边框样式。

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QSpinBox


class HoverSpinBox(QSpinBox):
    def __init__(self, parent=None):
        super(HoverSpinBox, self).__init__(parent)
        self.setStyleSheet("QSpinBox {border: 2px solid white;}")
        # 设置默认边框样式
        self.width = self.width()
        self.height = self.height()

    def enterEvent(self, event):
        self.setStyleSheet("QSpinBox {border: 2px solid red;}")
        # 设置鼠标进入时的边框样式
        super().enterEvent(event)

    def leaveEvent(self, event):
        self.setStyleSheet("QSpinBox {border: 2px solid white;}")
        # 设置鼠标离开时的边框样式
        super().leaveEvent(event)

class Example(QWidget):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        hbox = QHBoxLayout(self)
        spinbox = HoverSpinBox(self)
        hbox.addWidget(spinbox)

        self.setLayout(hbox)

        self.setGeometry(300, 300, 350, 250)
        self.setWindowTitle('Hover SpinBox')
        self.show()

if __name__ =='__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

通过继承QSpinBox并重写enterEvent()和leaveEvent()方法,我们可以轻松地添加在鼠标悬停在QSpinBox上方时的边框。在这个例子中,我们把默认边框样式设置为“2px solid white”,鼠标进入时设置边框样式为“2px solid red”,鼠标离开时设置边框样式为“2px solid white”。