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

xiaoxiao2021-02-27  144

一、选择图形的某个区域,绘制一个类似蚂蚁线的选区。使用类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()@0) - 200;         //设置过程点     for (int i=0; i<400; i++)     {         anim->setPosAt(i/400.0, QPointF(i-200,y));     }     timeLine->start();     scene->addItem(item); }

http://blog.csdn.net/yongan1006/article/details/7712821

转载请注明原文地址: https://www.6miu.com/read-14052.html

最新回复(0)