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. Class
Qt 6.11 is out! See what's new in the release blog

Class

Scheduled Pinned Locked Moved Solved General and Desktop
18 Posts 5 Posters 1.7k 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.
  • Pl45m4P Pl45m4

    Where exactly crashes your program? Any error message?

    @privatepepper said in Class:

    int width = 40;
    int height = 30;
    
    int Vertices;
    

    What's the reason for them being public?

    privatepepperP Offline
    privatepepperP Offline
    privatepepper
    wrote on last edited by
    #5

    @Pl45m4

    I get only one error - The program has unexpectedly finished.

    I use width and height in the mainwindow class to draw grid of QGraphicsRectItems , and I just realized that Vertices should be private, because I use Vertices only in this class, but now when i add Vertices to private and delete blabla integer my program too crashes;/

    Pl45m4P 1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #6

      Hi,

      Then use the debugger to see what is happening.

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      1
      • privatepepperP privatepepper

        @Pl45m4

        I get only one error - The program has unexpectedly finished.

        I use width and height in the mainwindow class to draw grid of QGraphicsRectItems , and I just realized that Vertices should be private, because I use Vertices only in this class, but now when i add Vertices to private and delete blabla integer my program too crashes;/

        Pl45m4P Offline
        Pl45m4P Offline
        Pl45m4
        wrote on last edited by
        #7

        @privatepepper said in Class:

        I use width and height in the mainwindow class to draw grid of QGraphicsRectItems

        There are fancy things called setters / getters :-)


        If debugging is the process of removing software bugs, then programming must be the process of putting them in.

        ~E. W. Dijkstra

        privatepepperP 1 Reply Last reply
        0
        • Pl45m4P Pl45m4

          @privatepepper said in Class:

          I use width and height in the mainwindow class to draw grid of QGraphicsRectItems

          There are fancy things called setters / getters :-)

          privatepepperP Offline
          privatepepperP Offline
          privatepepper
          wrote on last edited by
          #8

          @Pl45m4
          what do you mean by that?

          I found a way to fix my code. But I don't know why this thing works and what is that. When I started to use the debugger on my ide opened like another file, it looked like behind the scenes what qt is doing.
          Little part of that code:

          inline void QVector<T>::clear()
          {
              //if (!d->size)
              //    return;
             // destruct(begin(), end());
             // d->size = 0;
          }
          

          And if i comment out these lines, my code works fine and i can add new variables to my class:). Could someone explain what is this and why my code didn't work before?

          1 Reply Last reply
          0
          • SGaistS Offline
            SGaistS Offline
            SGaist
            Lifetime Qt Champion
            wrote on last edited by
            #9

            As I already suggested, use the debugger.

            Interested in AI ? www.idiap.ch
            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

            privatepepperP 1 Reply Last reply
            0
            • SGaistS SGaist

              As I already suggested, use the debugger.

              privatepepperP Offline
              privatepepperP Offline
              privatepepper
              wrote on last edited by
              #10

              @SGaist
              Yeah I know, and thanks for the help:), I already fixed my code as I mentioned above, but I don't understand what I fixed:/

              JonBJ 1 Reply Last reply
              0
              • SGaistS Offline
                SGaistS Offline
                SGaist
                Lifetime Qt Champion
                wrote on last edited by
                #11

                If you are talking about the QVector snippet, you did not fix anything, you broke QVector.

                Interested in AI ? www.idiap.ch
                Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                1 Reply Last reply
                2
                • privatepepperP privatepepper

                  @SGaist
                  Yeah I know, and thanks for the help:), I already fixed my code as I mentioned above, but I don't understand what I fixed:/

                  JonBJ Offline
                  JonBJ Offline
                  JonB
                  wrote on last edited by JonB
                  #12

                  @privatepepper
                  Your comment-out code prevents QVector<T>::clear() from actually clearing its elements, and then your code works. I would look at everywhere you use a QVector. You have matrix->clear();; just what do you do with your QVector <int> *matrix? It is a member variable right next to where you introduce a new variable and then it crashes....

                          matrix->clear();
                          ...
                          matrix = new QVector <int> [nodes];
                  

                  What about first time round? You do initialize matrix before this, don't you, else you're trying to clear() a random area of memory....

                  privatepepperP 1 Reply Last reply
                  0
                  • JonBJ JonB

                    @privatepepper
                    Your comment-out code prevents QVector<T>::clear() from actually clearing its elements, and then your code works. I would look at everywhere you use a QVector. You have matrix->clear();; just what do you do with your QVector <int> *matrix? It is a member variable right next to where you introduce a new variable and then it crashes....

                            matrix->clear();
                            ...
                            matrix = new QVector <int> [nodes];
                    

                    What about first time round? You do initialize matrix before this, don't you, else you're trying to clear() a random area of memory....

                    privatepepperP Offline
                    privatepepperP Offline
                    privatepepper
                    wrote on last edited by
                    #13

                    @JonB
                    @SGaist

                    Thanks for help very much :), like JonB said the problem was matrix->clear(), I feel so dumb right now:D, lets hope that I will learn from this mistake; but it is weird for me that this problem only occurred when I tried to add new variables to the header file.

                    1 Reply Last reply
                    0
                    • Christian EhrlicherC Offline
                      Christian EhrlicherC Offline
                      Christian Ehrlicher
                      Lifetime Qt Champion
                      wrote on last edited by
                      #14

                      There is also no need to use a pointer here.

                      Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                      Visit the Qt Academy at https://academy.qt.io/catalog

                      privatepepperP 1 Reply Last reply
                      1
                      • Christian EhrlicherC Christian Ehrlicher

                        There is also no need to use a pointer here.

                        privatepepperP Offline
                        privatepepperP Offline
                        privatepepper
                        wrote on last edited by privatepepper
                        #15

                        @Christian-Ehrlicher said in Class:

                        There is also no need to use a pointer here.

                        Do you mean QVector <int> *matrix ? I added this pointer because I want that this vector would be 2d

                        1 Reply Last reply
                        0
                        • SGaistS Offline
                          SGaistS Offline
                          SGaist
                          Lifetime Qt Champion
                          wrote on last edited by
                          #16

                          Then use QVector<QVector<int>> matrix

                          Interested in AI ? www.idiap.ch
                          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                          privatepepperP 1 Reply Last reply
                          1
                          • SGaistS SGaist

                            Then use QVector<QVector<int>> matrix

                            privatepepperP Offline
                            privatepepperP Offline
                            privatepepper
                            wrote on last edited by
                            #17

                            @SGaist

                            Okay, I will use QVector<QVector<int>> matrix, but why I shouldn't use a pointer? Is there a big difference? Sorry for dumb questions...

                            1 Reply Last reply
                            0
                            • Christian EhrlicherC Offline
                              Christian EhrlicherC Offline
                              Christian Ehrlicher
                              Lifetime Qt Champion
                              wrote on last edited by
                              #18

                              @privatepepper said in Class:

                              but why I shouldn't use a pointer?

                              Because it's not needed and when using an object you can't forget to initialize (and delete) it (as you did both)

                              Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                              Visit the Qt Academy at https://academy.qt.io/catalog

                              1 Reply Last reply
                              4

                              • Login

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