【发布时间】:2021-02-05 00:39:01
【问题描述】:
我目前正在尝试在 Qt (python) 中重现 Window 10 开始菜单滚动条,但我不知道如何调整自定义 QScrollBar 的大小以在运行时更改其宽度。
我尝试使用 QScrollBar.resize 方法(在 enterEvent 和 leaveEvent 中)调整它的大小,但它会将小部件缩放到它的“绘图区域”之外。 例如,我的滚动条设置为 QScrollArea 并且当我尝试调整它的大小时,它不会占用更多空间并移动小部件,而不是它只是在它的右侧缩放,我看不到它。
我现在找到的唯一解决方案是使用 StyleSheet,但我无法对其进行动画处理以实现我正在寻找的平滑调整大小。
有一些代码供你测试,看看有什么问题:
from PySide2 import QtWidgets, QtCore
from functools import partial
class MyTE(QtWidgets.QPlainTextEdit):
def __init__(self):
super(MyTE, self).__init__()
self.setVerticalScrollBar(MyScrollBar(self))
self.setPlainText('mmmmmmmmmmmmmmmmmmmmmmmmmmmmm'*50)
class MyScrollBar(QtWidgets.QScrollBar):
def __init__(self, parent=None):
super(MyScrollBar, self).__init__(parent=parent)
self.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
def enterEvent(self, event):
super(MyScrollBar, self).enterEvent(event)
self.resize(QtCore.QSize(4, self.height()))
def leaveEvent(self, event):
super(MyScrollBar, self).leaveEvent(event)
self.resize(QtCore.QSize(10, self.height()))
wid = MyTE()
wid.show()
【问题讨论】:
-
完成!我能问一下你为什么删除了我留言的最后一行吗?我只是想说谢谢你的帮助..
-
正是出于这个原因。问候是无关紧要的,因为帖子应该关注问题,所以避免问候,谢谢,关于你的专业水平的信息或不相关的信息。社区了解每个成员都对社区的任何成员表示感谢,因此无需明确表示
标签: python pyside2 qtstylesheets qscrollbar