常用:
Line: 直线
Rect:长方形
Ellipse:椭圆
Arc:圆弧
Chord:封闭圆弧
polygon:多边形
指定颜色:
QColor green(0,0XFF,0)
QColor whitte (0XFF,0XFF,0XFF)
QColor black (0,0,0)
qt中有两种绘制参数
QPen:负责线条的颜色和风格
QBrush:负责填充的颜色和风格
对于非封闭形状是不填充的
画图事件:
void paintEvent (QPaintEvent * event)
{
QPainter painter(this);
int width=this->width();
int height=this->height();
//设置整个控件的背景色
painter.setBrush(QBrush(QColor(0x0,0x0,0x0)));
painter.drawRect(0,0,width,height);
//控制如何绘制外围的线条
QColor green(0,0xFF,0);
QPen pen(green);
pen.setStyle(Qt::DashDotDotLine);//设置线条的模式,这是点画线。
pen.setWidth(3);//设置线条的宽度
//具体的画笔和填充的格式可以参考手册
painter.setPen(pen);
QBrush brush(QColor(0xFF,0,0));
painter.setBrush(brush);
painter.drawRect(10,10,50,30);
}
QPoint:描述了一个点坐标
QSize: 描述了宽度和高度
QRect: 描述了一个矩形的坐标和大小
//动画的实现
m_timerId=startTimer(1000);//启动定时器,指定时间间隔(毫秒)
m_times=0;
void paintEvent(QPaintEvent * event)
{
QPainter painter(this);
if(m_times==0)
{
QBrush brush(QColor(0x00,0xff,0));
painter.serBrush(brush);
m_times ++;
}
else
{
QBrush brush(QColor(0x88,0x88,0x88));
painter.setBrush(brush);
m_times=0;
}
painter.drawEllipse(10,10,40,40);
}
void timerEvent (QTimerEvent * event)
{
if(event->timerId()==m_timerId)
{
update();//重绘
}
}
update()函数只是通知界面重新绘制,会在事件循环中产生一个“绘制事件” paint event,在适合的时候才重新绘制。