我一直在使用paint事件定制PyQt小部件。我一直在尝试定制QSlider小部件,并取得了一些成功,主要是CSS样式。但是,我很难用QPainterPath使它弯曲,因为它看起来总是平坦的。这是不是超出了这个小部件的能力(这会让我吃惊)?以下是我最近的一次尝试,但没有成功。我用同样的方法尝试了路径点而不是cubicTo()。有谁能帮我或指出正确的方向吗?
from PyQt5 import QtGui, QtWidgets, QtCore
class slider(QtWidgets.QSlider):
def __init__(self, parent=None):
super(slider, self).__init__(parent)
self.parent = parent
self.setMinimum(10)
self.setMaximum(30)
self.setValue(20)
self.setTickPosition(QtWidgets.QSlider.TicksBelow)
self.setTickInterval(5)
def paintEvent(self, event):
qp = QtGui.QPainter()
qp.begin(self)
qp.setRenderHint(QtGui.QPainter.Antialiasing)
self.drawCurve(qp)
qp.end()
def drawCurve(self, qp):
path = QtGui.QPainterPath()
path.moveTo(30, 30)
path.cubicTo(30, 30, 200, 350, 200, 30)
qp.drawPath(path)
要有深度的感觉,只需选择正确的颜色,对于这个qpanterpathstroker也是使用的。另一方面,我添加了QPainterPath可缩放的功能:
相关问题 更多 >
编程相关推荐