[QT]在子窗口或者控件中绘图

在QT中,可以采用两种方式在子窗口或控件上绘图:一是继承并重写控件类的paintEvent()方法,使用QPainter进行绘制;二是通过事件过滤器,注册eventFilter()来处理paintEvent(),但这种方法不支持QPainter绘图。注意在事件过滤器中处理完事件后需调用event->ignore()或返回true。
摘要由CSDN通过智能技术生成

要在子窗口中绘图,有2种方法:

1.重写子窗口的控件类(即继承该类,并重载其paintEvent()方法),实现其paintEvent()方法,然后在ui里面将原来的控件提升(promote to)为新类。

(注:使用QPainter画图时,只能指定所属为当前类的引用Qpainter painter = new QPainter(this),所以应重写paintEvent())

填写好新类的类名及头文件名。

2.使用事件过滤器,重写eventFilter(),在子窗口或控件中注册事件过滤器(installEventFilter()),然后就可以在eventFilter()里随心所欲地重写过滤到的paintEvent()事件了。

(注:在重写的paintEvent()事件中,无法使用QPainter进行绘图)

(注:在eventFilter()中,处理完过滤事件后应调用event->ignore()函数或return true来告诉子窗口或控件,该事件已经处理过)

    ui->
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值