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. Cannot delete items of a QVBoxLayout
Qt 6.11 is out! See what's new in the release blog

Cannot delete items of a QVBoxLayout

Scheduled Pinned Locked Moved Solved General and Desktop
20 Posts 3 Posters 6.2k Views 2 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.
  • NiagarerN Niagarer

    @mrjj
    Thanks, I tried and it crashes at exactely this line you gave me.
    I can not do anything with the layout
    Seems to be a nasty one...

    mrjjM Offline
    mrjjM Offline
    mrjj
    Lifetime Qt Champion
    wrote on last edited by mrjj
    #8

    @Niagarer
    If it crashes there, something must be wrong with the pointer
    myBoxLayout->count();

    You did show real code, yes ?

    A classic is to define in .h
    and then do
    QVBoxLayout *myBoxLayout = new QVBoxLayout; ( in ctror)
    and make local variable instead.

    set it to null where u define it
    QVBoxLayout *myBoxLayout=nullptr;

    and check if its NON null before using it on the count()

    NiagarerN 1 Reply Last reply
    0
    • mrjjM mrjj

      @Niagarer
      If it crashes there, something must be wrong with the pointer
      myBoxLayout->count();

      You did show real code, yes ?

      A classic is to define in .h
      and then do
      QVBoxLayout *myBoxLayout = new QVBoxLayout; ( in ctror)
      and make local variable instead.

      set it to null where u define it
      QVBoxLayout *myBoxLayout=nullptr;

      and check if its NON null before using it on the count()

      NiagarerN Offline
      NiagarerN Offline
      Niagarer
      wrote on last edited by Niagarer
      #9

      @mrjj
      Ok, I tried it.
      I did not make the classic mistake but if I define it with a nullpointer

      myBoxLayout = nullptr;
      

      and then asking if it's nullptr where I try to delete all content, it says, it is not null
      But I only defined it once...
      And if I ask that this way:

      myBoxLayout = nullptr;
      if(myBoxLayout != nullptr){
          qDebug() << "layout is not null";
      }
      

      it says, it is not null...

      mrjjM 1 Reply Last reply
      0
      • NiagarerN Niagarer

        @mrjj
        Ok, I tried it.
        I did not make the classic mistake but if I define it with a nullpointer

        myBoxLayout = nullptr;
        

        and then asking if it's nullptr where I try to delete all content, it says, it is not null
        But I only defined it once...
        And if I ask that this way:

        myBoxLayout = nullptr;
        if(myBoxLayout != nullptr){
            qDebug() << "layout is not null";
        }
        

        it says, it is not null...

        mrjjM Offline
        mrjjM Offline
        mrjj
        Lifetime Qt Champion
        wrote on last edited by
        #10

        @Niagarer
        what ??
        myBoxLayout = nullptr;
        if(myBoxLayout != nullptr){
        qDebug() << "layout is not null";
        }

        that code should say nothing. :)
        I assume that
        myBoxLayout = nullptr; <<< in .h yes ?

        Sorry, i have really no idea.
        Its does work that way and i have used takeAt many times.

        NiagarerN 1 Reply Last reply
        0
        • mrjjM mrjj

          @Niagarer
          what ??
          myBoxLayout = nullptr;
          if(myBoxLayout != nullptr){
          qDebug() << "layout is not null";
          }

          that code should say nothing. :)
          I assume that
          myBoxLayout = nullptr; <<< in .h yes ?

          Sorry, i have really no idea.
          Its does work that way and i have used takeAt many times.

          NiagarerN Offline
          NiagarerN Offline
          Niagarer
          wrote on last edited by Niagarer
          #11

          @mrjj
          In the .h file:

              QVBoxLayout *myBoxLayout;
          

          and in the .cpp file:

          myBoxLayout = nullptr;
          if(myBoxLayout == nullptr){
              qDebug() << "layout is null";
          }
          

          and it prints nothing...
          I really don't understand that too.
          I just hope that I am not doing a totally dumb mistake here...

          mrjjM 1 Reply Last reply
          0
          • NiagarerN Niagarer

            @mrjj
            In the .h file:

                QVBoxLayout *myBoxLayout;
            

            and in the .cpp file:

            myBoxLayout = nullptr;
            if(myBoxLayout == nullptr){
                qDebug() << "layout is null";
            }
            

            and it prints nothing...
            I really don't understand that too.
            I just hope that I am not doing a totally dumb mistake here...

            mrjjM Offline
            mrjjM Offline
            mrjj
            Lifetime Qt Champion
            wrote on last edited by
            #12

            @Niagarer
            Hi, no worries, we all do stupid mistakes sometimes.
            Its a sign of a productive programmer ;)

            first
            QVBoxLayout *myBoxLayout; -> QVBoxLayout *myBoxLayout=nullptr.
            in .h
            then do NOT
            myBoxLayout = nullptr; before the check. ( you kill it )

            also , it must print something ???
            myBoxLayout = nullptr;
            if(myBoxLayout == nullptr){
            qDebug() << "layout is null";
            }
            else something is really, really wrong.

            Can you test this small sample ?
            https://www.dropbox.com/s/tkl1hdik6q0qwl2/myreuselayout.zip?dl=0
            Uses your code to remove buttons from layout.

            NiagarerN 2 Replies Last reply
            1
            • mrjjM mrjj

              @Niagarer
              Hi, no worries, we all do stupid mistakes sometimes.
              Its a sign of a productive programmer ;)

              first
              QVBoxLayout *myBoxLayout; -> QVBoxLayout *myBoxLayout=nullptr.
              in .h
              then do NOT
              myBoxLayout = nullptr; before the check. ( you kill it )

              also , it must print something ???
              myBoxLayout = nullptr;
              if(myBoxLayout == nullptr){
              qDebug() << "layout is null";
              }
              else something is really, really wrong.

              Can you test this small sample ?
              https://www.dropbox.com/s/tkl1hdik6q0qwl2/myreuselayout.zip?dl=0
              Uses your code to remove buttons from layout.

              NiagarerN Offline
              NiagarerN Offline
              Niagarer
              wrote on last edited by
              #13

              @mrjj
              Now, it does not print any qDebugs() anymore... what the hell!?

              1 Reply Last reply
              0
              • ? Offline
                ? Offline
                A Former User
                wrote on last edited by
                #14

                Close Creator, delete the build directory and start Creator again. Sometime strange things happen.

                1 Reply Last reply
                0
                • NiagarerN Offline
                  NiagarerN Offline
                  Niagarer
                  wrote on last edited by Niagarer
                  #15

                  Ok, I did and now I have a mistake at a point in the code before the setting up of the layout.
                  I add a Tab of a tabWidget and there it crashes.,.. This was never a problem, this line works sonce weeks, I did not change anything there.
                  I deleted the build directory, opened creator again, ran qmake, rebuilt and that's it, no errors, it is just crashing

                  1 Reply Last reply
                  0
                  • mrjjM mrjj

                    @Niagarer
                    Hi, no worries, we all do stupid mistakes sometimes.
                    Its a sign of a productive programmer ;)

                    first
                    QVBoxLayout *myBoxLayout; -> QVBoxLayout *myBoxLayout=nullptr.
                    in .h
                    then do NOT
                    myBoxLayout = nullptr; before the check. ( you kill it )

                    also , it must print something ???
                    myBoxLayout = nullptr;
                    if(myBoxLayout == nullptr){
                    qDebug() << "layout is null";
                    }
                    else something is really, really wrong.

                    Can you test this small sample ?
                    https://www.dropbox.com/s/tkl1hdik6q0qwl2/myreuselayout.zip?dl=0
                    Uses your code to remove buttons from layout.

                    NiagarerN Offline
                    NiagarerN Offline
                    Niagarer
                    wrote on last edited by
                    #16

                    @mrjj
                    Yep, this project works. So it has to be my bad.

                    1 Reply Last reply
                    0
                    • ? Offline
                      ? Offline
                      A Former User
                      wrote on last edited by
                      #17

                      I say "unitialized memory somewhere".

                      mrjjM 1 Reply Last reply
                      1
                      • ? A Former User

                        I say "unitialized memory somewhere".

                        mrjjM Offline
                        mrjjM Offline
                        mrjj
                        Lifetime Qt Champion
                        wrote on last edited by
                        #18

                        I agree @Wieland , the big question is just Where :)

                        @Niagarer
                        If its a small project, can you zip and link it here ?

                        NiagarerN 1 Reply Last reply
                        0
                        • mrjjM mrjj

                          I agree @Wieland , the big question is just Where :)

                          @Niagarer
                          If its a small project, can you zip and link it here ?

                          NiagarerN Offline
                          NiagarerN Offline
                          Niagarer
                          wrote on last edited by Niagarer
                          #19

                          Ahh about 1300 lines, unfortunately not small.
                          It works now... aaand yes, I think the deleting of the builddirectory worked.
                          What happened:
                          I deleted the build directory and then the program crashed at an other point before the setting up of the layout. I found a thing that I would not call a mistake, but it surely is in some way, because of my endless function calling, the function, where I set up the layouts got called twice. I don't really know, why this is a mistake, but after I fixed it, it worked and then the program was able to say that it is a nullpointer. So I changed it back to new QVBoxLayout and everything works.
                          The weird thing is, that I really don't know why it was a problem to setting up the layout as a nullpointer twice.
                          But, anyway, thanks for your help!

                          1 Reply Last reply
                          1
                          • mrjjM Offline
                            mrjjM Offline
                            mrjj
                            Lifetime Qt Champion
                            wrote on last edited by
                            #20

                            Super :)
                            Im not sure what calling the function twice could be issue but it did do something it seems.

                            1 Reply Last reply
                            1

                            • Login

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