QT 类及其实现效果(8)--橡皮筋线,Graphics view

一、选择图形的某个区域,绘制一个类似蚂蚁线的选区。使用类QRubberBand
 if (!rubberBand)
     rubberBand = new QRubberBand(QRubberBand::Rectangle, this);
    rubberBand->setGeometry(QRect(origin, QSize()));
    rubberBand->show();

二、Graphics view
Graphics view框架结构主要包含了3个主要的类,分别是QGraphicsScene、QGraphicsView

、QGraphicsItem。QGraphicsScene场景类提供了一个用于管理位于其中的众多项目的

QGraphicsItem容器。QGraphicsView视口类用于显示场景中的项目。三者之间的关系

 

 

 

 


超时后可重新实现时间函数事件,完成相应相应超时处理。
void timerEvent(QTimerEvent *);

QGraphicsView和QGraphicsScene都有drawBackground()虚函数,它们做的工作都是
重画场景的背景。
MapWidget::drawBackground(QPainter *painter, const QRectF &rect)
{
    painter->drawPixmap(int(sceneRect().left()),int(sceneRect().top()),map);
}

 

 

使用QGraphicsItem必须重新实现两个函数

     QRectF boundingRect() const;
    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);

使用

     QGraphicsScene *scene = new QGraphicsScene(this);   

      scene->setSceneRect(-200,-200,400,400);       

   QGraphicsView *view = new QGraphicsView;   

    view->setScene(scene);   

    view->setMinimumSize(400,400);   

   view->show();       

   setCentralWidget(view);


    动画效果
MainWindow::slotAddAnimationItem()
{
    StarItem *item = new StarItem;
    QGraphicsItemAnimation *anim = new      QGraphicsItemAnimation;
   //设置要加入的动画元素
    anim->setItem(item);
    QTimeLine *timeLine = new QTimeLine(4000);
    timeLine->setCurveShape(QTimeLine::LinearCurve);
    //时间曲线永远循环
    timeLine->setLoopCount(0);
   //设置时间轴
    anim->setTimeLine(timeLine);
   
    int y = (qrand()%400) - 200;
  
    //设置过程点
    for (int i=0; i<400; i++)
    {
        anim->setPosAt(i/400.0, QPointF(i-200,y));
    }
    timeLine->start();
    scene->addItem(item);
}

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值