![7b837029254773ca6aca024bd508775e.png](https://i-blog.csdnimg.cn/blog_migrate/42977e445b0693adf95f9711655df999.jpeg)
部件提升
Qt中的部件提升非常有用,我们可以在现有的部件基础之上增加一些我们自己个性化的需求。然而由于Go语言的特性,和therecipe/qt的完成度,对于使用部件提升需要一些技巧。
LED-需求描述
假定我们希望实现一个简单的LED显示部件,这个部件有一个属性State
,通过设置布尔值可以显示红和绿两种状态。
这个功能有多种方式可以实现,我们可以通过扩展QLabel
,并通过调用setPicture
或setPixmap
来实现,也可以扩展QWidget
,并通过重写paintEvent
来实现,这里我们使用后者。
手撸的实现方式
让我们先手撸一下,完整代码如下:
package main
import (
"os"
"github.com/therecipe/qt/core"
"github.com/therecipe/qt/gui"
"github.com/therecipe/qt/widgets"
)
type Led struct {
*widgets.QWidget
State bool
}
fun