Example #1
0
void MyQGraphicsView::passSimulationTime(int simutime)
{
    QPainter painter;
    QColor color(255,0,0);
    painter.fillRect(QRect(0,0,20,20),color);

    qDebug()<<"simulation time in view in minutes"<<simutime;
    int simutimeinseconds= simutime*60;
     noofperiods= simutimeinseconds/5;
    //for each period 40 pixels, so caluclueate for noofperiods how many pixels will take
    int xsizeinpixels=noofperiods*40;
    xsizeinpixels+=100;//just for the arrangement of the items in the scene , allocating some more space

    scene = new QGraphicsScene();

    int x= xsizeinpixels;
    int y= 1000;

    this->setSceneRect(QRectF(-20, -20, x, y));
    this->setScene(scene);
    //scene->setBackgroundBrush(Qt::yellow);


    lineitem = new MyLine();

    connect(lineitem,SIGNAL(signal(qreal)),this,SLOT(windspeedFromLine(qreal)));
    connect(lineitem,SIGNAL(sendNewDialValue()),this,SLOT(SendNewDialValueToWindow()));

    scene->addItem(lineitem);

    ////    QScrollArea *scroll= new QScrollArea();
    ////    scroll->setBackgroundRole(QPalette::Dark);
    ////    scene->addItem(scroll);
    //    //scroll->setHorizontalScrollBarPolicy(Qt::WindowActive);

    //int maxxsize= 700-21-15;
    //int maxysize=700-21-15-15;
    //int gapy= maxysize/20;

    int gapy=32.45;//this is the gap in pixels between the items in y axis


    int gapx=40;
    int xinitialpos=0;
    int ypos=10;
    for(int i=20;i>=1;i--)
    {
        QString str;
        str.setNum(i);

        QGraphicsTextItem *item = new QGraphicsTextItem(str);
        item->setPos(mapToScene(-20,ypos));
        scene->addItem(item);
        ypos+=gapy;
        //maxysize = maxysize-gapy;
    }
    qDebug()<<"max y position"<<ypos;


  QGraphicsTextItem *item1 = new QGraphicsTextItem(tr("wind speeds in knots"));
    item1->setPos(mapToScene(-20,-20));
    scene->addItem(item1);


    for(int time=0;time<=simutimeinseconds;time= time+5)
    {
        QString str;
        str.setNum(time);
        QGraphicsTextItem *item = new QGraphicsTextItem(str);
//        if(time%2==0)
//        {
//        QLinearGradient lGrad(QPointF(xinitialpos, 668), QPointF(xinitialpos, 100));
//        lGrad.setColorAt(0, Qt::black);
//        lGrad.setColorAt(1, Qt::darkBlue);

//        }

        item->setPos(mapToScene(xinitialpos,668));
        scene->addItem(item);

//        QGraphicsLineItem *line = new QGraphicsLineItem();
//        line->setPos(mapToScene(xinitialpos,666));

        xinitialpos = xinitialpos+gapx;
//        QPen pen(Qt::yellow,3,Qt::DashDotLine,Qt::RoundCap,Qt::RoundJoin);

//       scene->addLine(xinitialpos+4,665,xinitialpos+4,20,pen);
    }

    QGraphicsTextItem *item2 = new QGraphicsTextItem(tr("time in seconds"));
    item2->setPos(mapToScene(668,681));
    scene->addItem(item2);

        timer = new QTimer(this);
        connect(timer,SIGNAL(timeout()),scene,SLOT(advance()));



    horizontalGroupBox = new QGroupBox(tr("Wind angles"));
    horizontalGroupBoxspinboxes = new QGroupBox();

    QHBoxLayout *hboxlayout = new QHBoxLayout;
    QHBoxLayout *hboxlayoutspinboxes = new QHBoxLayout;

    //    //QScrollArea *scroll=new QScrollArea();

    for(int i=0;i<noofperiods;i++)
    {
        QDial *dial=  new QDial();

        QSize size(35,35);
        dial->setMinimumSize(size);
        dial->setMaximumSize(size);
        dial->setNotchesVisible(1);
        dial->setWrapping(1);
        dial->setMaximum(359);
        dial->setMinimum(0);
        list.append(dial);
        //        //list.append(dial);

        QSpinBox * spin = new QSpinBox(this);
        //        // //QLabel *label = new QLabel(this);
        //        // //spinboxlist[i]= new QSpinBox(this);
        spin->setMaximum(359);
        spin->setMinimum(0);
        spin->setFixedSize(35,35);
        spinboxlist.append(spin);

        connect(list.at(i),SIGNAL(valueChanged(int)),spinboxlist.at(i),SLOT(setValue(int)));
        connect(spinboxlist.at(i),SIGNAL(valueChanged(int)),list.at(i),SLOT(setValue(int)));
        //        //int value= list.at(i)->value();
        //        //qDebug()<<"dial value "<<value;
        //        //connect(list.at(i),SIGNAL(valueChanged(int)),view,SLOT(setValuesOfList(int)));
        hboxlayout->addWidget(list[i]);
        hboxlayoutspinboxes->addWidget(spinboxlist[i]);
        //        hboxlayoutspinboxes->addSpacing(0);
        //qDebug()<<"dial width"<<dial->width();
        //        //hboxlayout->addWidget(spinboxlist[i]);
    }
    horizontalGroupBox->setLayout(hboxlayout);
    //    //scroll->setWidget(horizontalGroupBox);
    horizontalGroupBoxspinboxes->setLayout(hboxlayoutspinboxes);

    //horizontalGroupBox->set
    QGraphicsProxyWidget *proxy1= scene->addWidget(horizontalGroupBox);
    proxy1->setPos(0,700);

    QGraphicsProxyWidget *proxy2= scene->addWidget(horizontalGroupBoxspinboxes);
    proxy2->setPos(0,760);

    //QGraphicsProxyWidget *proxy1= scene->addWidget(horizontalGroupBoxspinboxes);
    //scene has advance () slot, what it does is it says every object in the scee
    //that it is time to advance one step or multiple steps
    //thast what animation is

}