Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Update scene
Forum Update on Tuesday, May 27th 2025

Update scene

Scheduled Pinned Locked Moved Solved General and Desktop
updatesceneqgraphicsview
34 Posts 3 Posters 12.1k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M mrjj
    25 Jan 2016, 11:51

    @mandruk1331

    Ok.
    So what happened?
    if you do
    rectan[0]->setPos(0,0);

    Does it move then?

    M Offline
    M Offline
    mandruk1331
    wrote on 25 Jan 2016, 12:04 last edited by
    #11

    @mrjj No, at the moment I'm trying to make smth like an Update func

    void MainWindow::Shot(){

    QGraphicsRectItem *Pos1;
    

    Pos1=rectan[0];
    QGraphicsRectItem *Pos2;
    Pos2=rectan[1];
    scene->removeItem(rectan.at(0));
    scene->removeItem(rectan.at(1));

    rectan.at(0) = Pos2;
    rectan.at(1) = Pos1;
    scene->addItem(rectan.at(0));
    scene->addItem(rectan.at(1));
    }

    Mandruk1331

    1 Reply Last reply
    0
    • M Offline
      M Offline
      mrjj
      Lifetime Qt Champion
      wrote on 25 Jan 2016, 12:09 last edited by
      #12

      Hi
      at returns const.
      This looks strange to me
      rectan.at(0) = Pos2;
      maybe
      rectan[0] = Pos2

      Also this will just swap the position in your list.
      It will NOT change on screen.

      You need to use pos() and SetPos
      Not just swap in you array. You swap pointers.
      You should swap QPointF using pos and setPos;

      M 1 Reply Last reply 25 Jan 2016, 12:17
      0
      • M mrjj
        25 Jan 2016, 12:09

        Hi
        at returns const.
        This looks strange to me
        rectan.at(0) = Pos2;
        maybe
        rectan[0] = Pos2

        Also this will just swap the position in your list.
        It will NOT change on screen.

        You need to use pos() and SetPos
        Not just swap in you array. You swap pointers.
        You should swap QPointF using pos and setPos;

        M Offline
        M Offline
        mandruk1331
        wrote on 25 Jan 2016, 12:17 last edited by
        #13

        @mrjj I thought it will repaint the rects, because first I delete them and then I want to repaint them with new options

        Mandruk1331

        M 1 Reply Last reply 25 Jan 2016, 12:19
        0
        • M mandruk1331
          25 Jan 2016, 12:17

          @mrjj I thought it will repaint the rects, because first I delete them and then I want to repaint them with new options

          M Offline
          M Offline
          mrjj
          Lifetime Qt Champion
          wrote on 25 Jan 2016, 12:19 last edited by
          #14

          @mandruk1331

          Yes I guess it will repaint them on scene.
          But it matters not for scene if you swap your own array.
          The items still have same location as before as you do not setPos
          (from code shown)

          M 1 Reply Last reply 25 Jan 2016, 12:25
          0
          • M mrjj
            25 Jan 2016, 12:19

            @mandruk1331

            Yes I guess it will repaint them on scene.
            But it matters not for scene if you swap your own array.
            The items still have same location as before as you do not setPos
            (from code shown)

            M Offline
            M Offline
            mandruk1331
            wrote on 25 Jan 2016, 12:25 last edited by
            #15

            @mrjj and another one, I have a loop inside of a loop and when the second one finishes its iteration it won't singleshot on another iteration of the first loop

            for (int =0;i<10;i++){
            //and when i is 1 the second loop won't singleshot again
            for(int j=0;j<9;j++){
            SingleShot
            }
            }

            Mandruk1331

            1 Reply Last reply
            0
            • M Offline
              M Offline
              mrjj
              Lifetime Qt Champion
              wrote on 25 Jan 2016, 12:28 last edited by
              #16

              well
              Normally it works as many times as u set it up but hard to guess at with
              only "SingleShot".

              M 1 Reply Last reply 25 Jan 2016, 12:50
              0
              • M mrjj
                25 Jan 2016, 12:28

                well
                Normally it works as many times as u set it up but hard to guess at with
                only "SingleShot".

                M Offline
                M Offline
                mandruk1331
                wrote on 25 Jan 2016, 12:50 last edited by
                #17

                @mrjj Why this code does not add the item, I don't understand, I remove it and then I want to re-add it with new options
                void MainWindow::Shot(){
                QGraphicsRectItem *t = new QGraphicsRectItem(rectan.at(0));

                scene->removeItem(rectan.at(1));

                rectan[1] = t;
                scene->addItem(rectan[1]);
                }

                Mandruk1331

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  mrjj
                  Lifetime Qt Champion
                  wrote on 25 Jan 2016, 12:55 last edited by
                  #18

                  @mandruk1331 said:

                  Why do yo u give rectan.at(0) to constructor ?
                  new QGraphicsRectItem(rectan.at(0));

                  Try
                  scene->addItem( new QGraphicsRectItem );
                  and tell if that not add a new item?

                  M 1 Reply Last reply 25 Jan 2016, 17:51
                  0
                  • M mrjj
                    25 Jan 2016, 12:55

                    @mandruk1331 said:

                    Why do yo u give rectan.at(0) to constructor ?
                    new QGraphicsRectItem(rectan.at(0));

                    Try
                    scene->addItem( new QGraphicsRectItem );
                    and tell if that not add a new item?

                    M Offline
                    M Offline
                    mandruk1331
                    wrote on 25 Jan 2016, 17:51 last edited by mandruk1331
                    #19

                    @mrjj Ok, I managed to swap positions of the rectangles, but they swap not always, at first execution they swap on the other they don't, what could be the problem??

                    void MainWindow::Shot(){
                    QPointF Pos1;
                    QPointF Pos2;
                    Pos1 = rectan.at(5)->pos();
                    Pos2 = rectan.at(6)->pos();

                    rectan.at(6)->setBrush(Qt::blue);
                    rectan.at(5)->setBrush(Qt::green);
                    // rectan.at(5)->setBrush(Qt::blue);
                    rectan.at(6)->setPos(Pos1.rx()-30,Pos1.ry());
                    rectan.at(5)->setPos(Pos2.rx()+30,Pos2.ry());

                    }
                    Solved it)

                    Mandruk1331

                    1 Reply Last reply
                    0
                    • M Offline
                      M Offline
                      mrjj
                      Lifetime Qt Champion
                      wrote on 25 Jan 2016, 18:18 last edited by
                      #20

                      hi
                      put qDebug() << "in shot:"
                      in the
                      MainWindow::Shot()
                      to make sure its actually called mutiple times.

                      M 1 Reply Last reply 25 Jan 2016, 19:19
                      0
                      • M mrjj
                        25 Jan 2016, 18:18

                        hi
                        put qDebug() << "in shot:"
                        in the
                        MainWindow::Shot()
                        to make sure its actually called mutiple times.

                        M Offline
                        M Offline
                        mandruk1331
                        wrote on 25 Jan 2016, 19:19 last edited by
                        #21

                        @mrjj Pos2 = rectan.at(6)->scenePos(); - this one return (0,0), why? I tried pos() too

                        Mandruk1331

                        1 Reply Last reply
                        0
                        • M Offline
                          M Offline
                          mrjj
                          Lifetime Qt Champion
                          wrote on 25 Jan 2016, 19:23 last edited by
                          #22

                          if pos() returns 0,0 , it must mean the items is actually at 0,0.

                          M 1 Reply Last reply 25 Jan 2016, 19:40
                          0
                          • M mrjj
                            25 Jan 2016, 19:23

                            if pos() returns 0,0 , it must mean the items is actually at 0,0.

                            M Offline
                            M Offline
                            mandruk1331
                            wrote on 25 Jan 2016, 19:40 last edited by
                            #23

                            @mrjj and the other ones return 0,0. The object are unique they are all parents and have no child, I want to get the positions of each object so I could move them

                            Mandruk1331

                            M 1 Reply Last reply 25 Jan 2016, 19:43
                            0
                            • M mandruk1331
                              25 Jan 2016, 19:40

                              @mrjj and the other ones return 0,0. The object are unique they are all parents and have no child, I want to get the positions of each object so I could move them

                              M Offline
                              M Offline
                              mrjj
                              Lifetime Qt Champion
                              wrote on 25 Jan 2016, 19:43 last edited by
                              #24

                              @mandruk1331
                              Something is not right.
                              Unless they are all really drawn at 0,0 then pos() should return the
                              actual position.
                              Did you new a QGraphicsRectItem and inserted directly in the list?

                              M 1 Reply Last reply 25 Jan 2016, 19:45
                              0
                              • M mrjj
                                25 Jan 2016, 19:43

                                @mandruk1331
                                Something is not right.
                                Unless they are all really drawn at 0,0 then pos() should return the
                                actual position.
                                Did you new a QGraphicsRectItem and inserted directly in the list?

                                M Offline
                                M Offline
                                mandruk1331
                                wrote on 25 Jan 2016, 19:45 last edited by
                                #25

                                @mrjj yes, and in the constructor I have set theirs poistions

                                Mandruk1331

                                M 1 Reply Last reply 25 Jan 2016, 19:47
                                0
                                • M mandruk1331
                                  25 Jan 2016, 19:45

                                  @mrjj yes, and in the constructor I have set theirs poistions

                                  M Offline
                                  M Offline
                                  mrjj
                                  Lifetime Qt Champion
                                  wrote on 25 Jan 2016, 19:47 last edited by
                                  #26

                                  Ok, then they should still have the pos, unless you swapped with a
                                  item having 0,0.

                                  1 Reply Last reply
                                  0
                                  • M Offline
                                    M Offline
                                    mrjj
                                    Lifetime Qt Champion
                                    wrote on 25 Jan 2016, 19:51 last edited by
                                    #27

                                    Can I ask how any values (rects) you try to visualize?

                                    M 1 Reply Last reply 25 Jan 2016, 19:58
                                    0
                                    • M mrjj
                                      25 Jan 2016, 19:51

                                      Can I ask how any values (rects) you try to visualize?

                                      M Offline
                                      M Offline
                                      mandruk1331
                                      wrote on 25 Jan 2016, 19:58 last edited by
                                      #28

                                      @mrjj 10

                                      Mandruk1331

                                      M 1 Reply Last reply 25 Jan 2016, 20:04
                                      0
                                      • M mandruk1331
                                        25 Jan 2016, 19:58

                                        @mrjj 10

                                        M Offline
                                        M Offline
                                        mrjj
                                        Lifetime Qt Champion
                                        wrote on 25 Jan 2016, 20:04 last edited by
                                        #29

                                        @mandruk1331
                                        ok.
                                        And did you write the sort also?

                                        M 1 Reply Last reply 25 Jan 2016, 20:30
                                        0
                                        • M mrjj
                                          25 Jan 2016, 20:04

                                          @mandruk1331
                                          ok.
                                          And did you write the sort also?

                                          M Offline
                                          M Offline
                                          mandruk1331
                                          wrote on 25 Jan 2016, 20:30 last edited by
                                          #30

                                          @mrjj yes
                                          for( int i=0;i<random_numbers_.size()-1;i++){
                                          for(int j=0;j<random_numbers_.size()-1;j++){

                                                 if(random_numbers_[j]>random_numbers_[j+1]){
                                                     count++;
                                          

                                          QTimer::singleShot(1000*count, [=]{ MainWindow::Shot(j);});

                                                  }
                                              }
                                          }
                                          

                                          Mandruk1331

                                          1 Reply Last reply
                                          0

                                          20/34

                                          25 Jan 2016, 18:18

                                          • Login

                                          • Login or register to search.
                                          20 out of 34
                                          • First post
                                            20/34
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved