如何使用QT的QPainter绘图和实时刷新?

如何使用QT的QPainter绘图和实时刷新?

2011-06-24 本文行家: _张_巍_

Qt是个很不错的GUI,现在已经更新到4.7了。最近的项目中用到了它,需要实时的显示一个画面,这就需要定期的刷新画面,本文章记录了使用QPainter类绘制图形的步骤,供参考。

Qt是个很不错的GUI,现在已经更新到4.7了。最近的项目中用到了它,需要实时的显示一个画面,这就需要定期的刷新画面,本文章记录了使用QPainter类绘制图形的步骤,供参考。
    要在绘图设备(paint device,一般是一个控件)上开始绘制,首先需要创建一个QPainter,把绘图设备指针传给QPainter对象。例如:
oid MyWidget::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    ...
}
使用QPainter的draw…()函数我们可以绘制各种图形。绘制的方式由QPainter的设置决定。设置的一部分是从绘图设备得到的,其他是初始化时的默认值。三个主要的设置为:画笔,刷子和字体。
画笔用来绘制直线和图形的边框。包含颜色,宽度,线型,角设置和连接设置。
刷子是填充几何图形的方式。包含颜色,方式设置,也可以是一个位图或者渐变色。
字体用来绘制文本。字体的属性很多,如字体名,字号等。
以下是属性的效果展示:


1
1


2
2


3
3


4
4


6
6
这些在文档中都可以找到,本次的问题是画完这些图后如何刷新。最开始想到的办法是创建一个定时器,然后在定时器的slot中重复的绘制图形,但是实际测试发现这样并不行,因为QPainter这玩意儿只能在PaintEvent中重新,在文档中也有说明:
文档
文档
所以使用定时器的方法就夭折了。但是由于继承了QWidget类,所以可以在timer的slot中调用update()等方法实现

QWidget
QWidget


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值