【发布时间】:2016-07-26 08:18:59
【问题描述】:
通常来自 PyQt 的默认 QScrollBar 对于高 dpi 显示来说太小了。这就是为什么有必要调整它们。无论如何,一旦你这样做了,为什么不从你可以做出的美学改进中受益呢?
这是您可以调整 QScrollBar 的“外观”的方法:
########################################
# My custom QScrollArea #
# widget #
########################################
class MyScrollArea(QScrollArea):
def __init__(self, parent):
super(MyScrollArea, self).__init__(parent)
...
self.setStyleSheet("""QScrollBar:vertical {
width: 45px;
margin: 45px 0 45px 0;
background: #32CC99;
}
QScrollBar::handle:vertical {
border: 10px solid grey;
background: white;
min-height: 10px;
}
QScrollBar::add-line:vertical {
border: 2px solid grey;
background: none;
height: 45px;
subcontrol-position: bottom;
subcontrol-origin: margin;
}
QScrollBar::sub-line:vertical {
border: 2px solid grey;
background: none;
height: 45px;
subcontrol-position: top;
subcontrol-origin: margin;
}
QScrollBar::up-arrow:vertical {
border: 5px solid grey;
height: 40px;
width: 40px
}
QScrollBar::down-arrow:vertical {
border: 5px solid grey;
height: 40px;
width: 40px
}""")
...
### End init ###
### End Class ###
我找到了以下关于如何设置样式表的文档:
http://doc.qt.io/qt-4.8/stylesheet-examples.html#customizing-qscrollbar d
问题:
自定义 QScrollBars 后,它们可以完美运行。但是当点击手柄或箭头时,用户不会得到任何视觉反馈。例如点击箭头,不会产生箭头被按下的视觉反馈。
下面是一个例子:
【问题讨论】:
-
我非常怀疑您是否可以使用样式表来实现它。当您单击箭头时,样式表无法更改滚动条句柄的状态。为此,您可能必须继承 QScrollBar 并自己进行绘画。