自定义控件和Qt开发一样,都分为UI部分和程序实现部分。接下来将从UI design 和 自定义控件类两方面介绍如何实现自定义控件。
UI设置
1 在窗口中添加一个widget,这就是一个可以自定义的控件,在窗口中起到占位的作用。

2 右键widget,选择Promoted widgets

3 设置class name 和 header file
class name 就是自定义类的名称,header file就是包含自定义控件类定义的python文件名

完成以上步骤,UI部分的设置就完成了。
自定义控件类实现
类的基本框架如下:
class myWidget(QWidget):
def __init__(self, parent):
super().__init__(parent)
self.initUI()
def initUI(self):
self.setMinimumSize(1, 30)
def setValue(self, value):
self.value = value
self.repaint() # 修改数值以后执行repaint刷新
def paintEvent(self, e):
qp = QPainter()
qp.begin(self)
self.drawWidget(qp)
qp.end()
def drawWidget(self, qp):
...
drawWidget是绘制控件的函数
paintEvent可以不用修改
setValue用来修改控制控件的参数,修改后,调用repaint就可以更新控件
所以这段程序的关键就是在drawWidget中绘制出自己定义的控件。这就需要涉及到QPainter.,QColor, QFont, QPen等内容。就等到我开发下一版仪表盘的时候再介绍。
Reference
PyQt6 自定义部件