自定义控件
自定义组件使用绘画工具创建,有两个基本方式:根据已有的创建或改进;通过自己绘图创建。
这个组件我们会在Nero,K3B,或者其他CD/DVD烧录软件中见到。
本例中,我们使用了和一个自定义组件,由进度条控制。显示的有物体(也就是CD/DVD)的总容量和剩余容量。进度条的范围是1~750。如果值达到了700(OVER_CAPACITY),就显示为红色,代表了烧毁了的意思。
class BurningWidget(QWidget):
def __init__(self):
super().__init__()
基于QWidget
组件。
修改组件进度条的高度,默认的有点小。
qp.setFont(font)
使用比默认更小一点的字体,这样更配。
绘画由三部分组成,黄色或红色区域和黄色矩形,然后是分割线,最后是添上代表容量的数字。
metrics = qp.fontMetrics()
这里使用字体去渲染文本。必须要知道文本的宽度,这样才能让文本的中间点正好落在竖线上。
拖动滑块的时候,调用了changeValue()
方法。这个方法内部,我们自定义了一个可以传参的updateBW信号。参数就是滑块的当前位置。这个数值之后还用来于Burning组件,然后重新渲染Burning组件。