BlueAoi 2024-03-16 16:59 采纳率: 14.3%
浏览 2

关于#python#的问题:将HoverSlider.show()换成了window.show()后,滑块的样式消失了

img

将HoverSlider.show()换成了window.show()后,滑块的样式消失了

img

from PySide6.QtWidgets import QSlider, QWidget, QApplication,QLabel,QVBoxLayout,QMainWindow
from PySide6.QtCore import Qt, Signal, QEvent
from PySide6.QtGui import QHoverEvent
import sys
class HoverSlider(QSlider):
    def __init__(self, orientation=Qt.Horizontal, parent=None):
        super().__init__(orientation, parent)
        style = """
            QSlider::groove:horizontal {
                height: 1px;
                background: white; 
            }
            QSlider::handle:horizontal {
                width: 20px;
                margin-top: -10px;
                margin-bottom: -10px;
                border-radius: 10px;
                background: qradialgradient(spread:reflect, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0.6 rgba(210, 210, 210, 255), stop:0.7 rgba(210, 210, 210, 100));
            }
            QSlider::handle:horizontal:hover {
                background: qradialgradient(spread:reflect, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0.6 rgba(255, 255, 255, 255), stop:0.7 rgba(255, 255, 255, 100));
            }
        """
        self.setStyleSheet(style)
class window(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.slider = HoverSlider(self)
if __name__ == "__main__":
    app = QApplication(sys.argv)
    mainWindow = window()
    mainWindow.show()
    sys.exit(app.exec())


  • 写回答

4条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-03-16 16:59
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题:将HoverSlider.show()换成了window.show()后,滑块的样式消失了。 解答: 原因:在类HoverSlider中有设置样式的代码,但是在类window中没有设置,导致滑块的样式消失了。 解决方法1:在类window的构造函数中,将self.slider的样式设置为HoverSlider的样式。 代码:
    class window(QWidget):
        def __init__(self, parent=None):
            super().__init__(parent)
            self.slider = HoverSlider(self)
            self.slider.setStyleSheet(self.slider.styleSheet())
    

    解决方法2:将HoverSlider的样式设置为全局样式(不建议使用,可能会对其他部件的样式造成影响)。 代码:

    app = QApplication(sys.argv)
    app.setStyleSheet(HoverSlider().styleSheet())
    mainWindow = window()
    mainWindow.show()
    sys.exit(app.exec())
    
    评论

报告相同问题?

问题事件

  • 创建了问题 3月16日