自定义控件

    自定义组件使用绘画工具创建,有两个基本方式:根据已有的创建或改进;通过自己绘图创建。

    这个组件我们会在Nero,K3B,或者其他CD/DVD烧录软件中见到。

    本例中,我们使用了和一个自定义组件,由进度条控制。显示的有物体(也就是CD/DVD)的总容量和剩余容量。进度条的范围是1~750。如果值达到了700(OVER_CAPACITY),就显示为红色,代表了烧毁了的意思。

    1. class BurningWidget(QWidget):
    2. def __init__(self):
    3. super().__init__()

    基于QWidget组件。

    修改组件进度条的高度,默认的有点小。

    1. qp.setFont(font)

    使用比默认更小一点的字体,这样更配。

    绘画由三部分组成,黄色或红色区域和黄色矩形,然后是分割线,最后是添上代表容量的数字。

    1. metrics = qp.fontMetrics()

    这里使用字体去渲染文本。必须要知道文本的宽度,这样才能让文本的中间点正好落在竖线上。

    拖动滑块的时候,调用了changeValue()方法。这个方法内部,我们自定义了一个可以传参的updateBW信号。参数就是滑块的当前位置。这个数值之后还用来于Burning组件,然后重新渲染Burning组件。