1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
   | #include "MaScene.h"
#include "MyProxy.h"
 
MaScene::MaScene()
{
    QWebView *web = new QWebView;
    web->load(QUrl("http://www.7sur7.be"));
    web->show();
 
 
 
    m_scene = new QGraphicsScene(this);
 
 
    m_scene->setSceneRect(0, 0, 1000, 800);
 
    m_monProxy = new QGraphicsProxyWidget();
    m_monProxy->setWidget(web);
 
    m_scene->addItem(m_monProxy);
 
    QTransform matrix;
    matrix.rotate(30, Qt::YAxis);
    matrix.translate(20, 30);
    m_monProxy->setTransform(matrix);
 
    m_view = new QGraphicsView();
    m_view->setScene(m_scene);
 
    setCentralWidget(m_view);
 
    QTimer *timer = new QTimer(this);
    timer->setInterval(30);
    connect(timer, SIGNAL(timeout()), this, SLOT(updateScene()));
    timer->start();
 
}
 
void MaScene::updateScene()
{
    foreach (MyProxy *item, m_objets)
    {
        placeItem(item);
    }
}
 
void MaScene::placeItem(MyProxy *objet)
{
    QTransform m;
    m.rotate(objet->rotation(), Qt::YAxis);
    m.translate(objet->center().x(), objet->center().y());
    m.translate(-objet->largeur(), -objet ->hauteur());
    objet->setTransform(m);
}
 
void MaScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
    if(event->buttons() & Qt::LeftButton)
    {
        QPointF delta(event->scenePos() - event->lastScenePos());
        qreal rotation = delta.x();
        MyProxy->setRotation(rotation);
 
        QTransform matrix;
        matrix.rotate(MyProxy->rotation(), Qt::YAxis);
        MyProxy->setTransform(matrix);
    }
} | 
Partager