首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

Qt Qpainter,该如何解决

2013-06-25 
Qt Qpainter我希望在widget上画两条直线,并且可以旋转;我的代码如下:void Widget::paintEvent(QPaintEvent

Qt Qpainter
我希望在widget上画两条直线,并且可以旋转;
我的代码如下:

void Widget::paintEvent(QPaintEvent *)
{
    QPainter painter(this);    

    painter.setBrush(Qt::red);
    painter.setPen(QPen(Qt::red,Qt::SolidLine));

    //L1
    painter.translate(100,100);//以指针根部为旋转中心
    painter.rotate(Angle1);
    painter.translate(-100,-100);//恢复原点
    painter.drawLine(50,100,100,100);

    //L2
    painter.translate(200,100);//以指针根部为旋转中心(移动原点)
    painter.rotate(Angle2);
    painter.translate(-200,-100);//恢复原点
    painter.drawLine(150,100,200,100);
}

实际是第一条线可以正常的旋转,但是第二条线却是很乱;
是不是第一条线处理完了之后要复原一些东西啊,求各位大牛帮忙。
[解决办法]
每次使用完后用painter.restore()进行恢复;
[解决办法]



void Widget::paintEvent(QPaintEvent *)
{
    QPainter painter(this);    

    painter.setBrush(Qt::red);
    painter.setPen(QPen(Qt::red,Qt::SolidLine));

    //L1
    painter.save();
    painter.translate(100,100);//以指针根部为旋转中心
    painter.rotate(Angle1);
    painter.translate(-100,-100);//恢复原点
    painter.drawLine(50,100,100,100);
    painter.restore();

    //L2
    painter.save();
    painter.translate(200,100);//以指针根部为旋转中心(移动原点)
    painter.rotate(Angle2);
    painter.translate(-200,-100);//恢复原点
    painter.drawLine(150,100,200,100);
    painter.restore();

}

热点排行