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. Convert Qt 4.x project to Qt 5.3 . Any tips?
Forum Updated to NodeBB v4.3 + New Features

Convert Qt 4.x project to Qt 5.3 . Any tips?

Scheduled Pinned Locked Moved Solved General and Desktop
14 Posts 4 Posters 3.6k 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.
  • L Offline
    L Offline
    Lineaxe
    wrote on last edited by
    #1

    Hi I am reading articles online and testing out the steps they describe. Still I am getting errors. Is there some easier way of going about this that I don't know about?

    K 1 Reply Last reply
    0
    • L Lineaxe

      Hi I am reading articles online and testing out the steps they describe. Still I am getting errors. Is there some easier way of going about this that I don't know about?

      K Offline
      K Offline
      KeithS
      wrote on last edited by
      #2

      @Lineaxe

      What steps? What errors?

      1 Reply Last reply
      1
      • L Offline
        L Offline
        Lineaxe
        wrote on last edited by
        #3

        here are some of the articles I have found on it . I had hoped it would be easy to upgrade your source :)

        https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5
        http://www.ics.com/blog/porting-desktop-applications-qt-4-qt-5
        I already have the following in my .pro file greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

        on compile in Qt 5.3 I got 2 warnings
        overriding recipe for target 'moc_MythreadName.cpp'
        ignoring old recipe for target 'moc_MythreadName.cpp'
        I got these both these errors 2x each , I suspect more will show up after I get them resolved.
        QLineEdit not declared
        QDoubleSpinBox not declared

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

          Hi,

          Do you have the corresponding includes in the files where you get the complain from ?

          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
          0
          • L Offline
            L Offline
            Lineaxe
            wrote on last edited by
            #5

            I did add in these 2 lines in the header just to see if I could compile after that .(It all compiles in Qt 4.8)
            #include <QLineEdit>
            #include <QDoubleSpinBox>

            So many other errors popped up after I did that that I wondered if I was doing the conversion correctly.
            mainwindow.cpp:22: error: invalid use of incomplete type 'class QDesktopWidget'
            QRect screenGeometry = QApplication::desktop()->screenGeometry();
            ^
            ui_mainwindow.h:14: from ./ui_mainwindow.h:14,
            /usr/include/arm-linux-gnueabihf/qt5/QtWidgets/qapplication.h:61: error: forward declaration of 'class QDesktopWidget'
            class QDesktopWidget;
            ^
            mainwindow.cpp:214: error: 'QMessageBox' was not declared in this scope
            QMessageBox msgBox;
            ^
            /usr/include/arm-linux-gnueabihf/qt5/QtWidgets/qapplication.h:61: error: forward declaration of 'class QDesktopWidget'
            class QDesktopWidget;
            ^

            K 1 Reply Last reply
            0
            • L Lineaxe

              I did add in these 2 lines in the header just to see if I could compile after that .(It all compiles in Qt 4.8)
              #include <QLineEdit>
              #include <QDoubleSpinBox>

              So many other errors popped up after I did that that I wondered if I was doing the conversion correctly.
              mainwindow.cpp:22: error: invalid use of incomplete type 'class QDesktopWidget'
              QRect screenGeometry = QApplication::desktop()->screenGeometry();
              ^
              ui_mainwindow.h:14: from ./ui_mainwindow.h:14,
              /usr/include/arm-linux-gnueabihf/qt5/QtWidgets/qapplication.h:61: error: forward declaration of 'class QDesktopWidget'
              class QDesktopWidget;
              ^
              mainwindow.cpp:214: error: 'QMessageBox' was not declared in this scope
              QMessageBox msgBox;
              ^
              /usr/include/arm-linux-gnueabihf/qt5/QtWidgets/qapplication.h:61: error: forward declaration of 'class QDesktopWidget'
              class QDesktopWidget;
              ^

              K Offline
              K Offline
              KeithS
              wrote on last edited by
              #6

              @Lineaxe
              Without seeing the .pro file, all that can be said is you're missing some include file(s) somewhere.

              The QDesktopWidget and QMessageBox include files are included from QWidgets so do you have this in your .pro INCLUDEPATH?

              jsulmJ 1 Reply Last reply
              0
              • K KeithS

                @Lineaxe
                Without seeing the .pro file, all that can be said is you're missing some include file(s) somewhere.

                The QDesktopWidget and QMessageBox include files are included from QWidgets so do you have this in your .pro INCLUDEPATH?

                jsulmJ Offline
                jsulmJ Offline
                jsulm
                Lifetime Qt Champion
                wrote on last edited by
                #7

                @KeithS No need to have QWidgets in INCLUDEPATH. To use widget related classes you need

                QT += widgets
                

                in the PRO file.

                https://forum.qt.io/topic/113070/qt-code-of-conduct

                K 1 Reply Last reply
                0
                • jsulmJ jsulm

                  @KeithS No need to have QWidgets in INCLUDEPATH. To use widget related classes you need

                  QT += widgets
                  

                  in the PRO file.

                  K Offline
                  K Offline
                  KeithS
                  wrote on last edited by
                  #8

                  @jsulm

                  In which case I guess the OP's test:

                  greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

                  is not correct?

                  jsulmJ 1 Reply Last reply
                  0
                  • K KeithS

                    @jsulm

                    In which case I guess the OP's test:

                    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

                    is not correct?

                    jsulmJ Offline
                    jsulmJ Offline
                    jsulm
                    Lifetime Qt Champion
                    wrote on last edited by
                    #9

                    @KeithS It is correct. The problem is probably: old style includes for Qt headers. These must be changed to e.g.:

                    #include <QMessageBox>
                    

                    https://forum.qt.io/topic/113070/qt-code-of-conduct

                    1 Reply Last reply
                    0
                    • L Offline
                      L Offline
                      Lineaxe
                      wrote on last edited by
                      #10

                      I checked all my headers they are all in #include <Qheadername> format . The only ones in double quotes are the ones from my own classes ,etc .

                      1 Reply Last reply
                      0
                      • jsulmJ Offline
                        jsulmJ Offline
                        jsulm
                        Lifetime Qt Champion
                        wrote on last edited by
                        #11
                        mainwindow.cpp:214: error: 'QMessageBox' was not declared in this scope
                        QMessageBox msgBox;
                        

                        Did you include QMessageBox in mainwindow.cpp?

                        https://forum.qt.io/topic/113070/qt-code-of-conduct

                        1 Reply Last reply
                        0
                        • L Offline
                          L Offline
                          Lineaxe
                          wrote on last edited by
                          #12

                          Well , I got 183 errors flagged , many are the same error . But they flag

                          Desktop , messagebox, and so on.. I thought about what you mentioned jsulm , so

                          I put
                          #include <QtWidgets> into mainwindow.cpp and all my other .cpp files that were accessing widgets and it solved the problem of all those errors in the cpp files. It seems then to convert from Qt 4.x over to Qt 5.3, overall , all I needed to do was add this line in to the appropriate .cpp files . I didn't need to declare separate headers , as I was testing out above.
                          I had to replace some .toAscii() over to .toLatin1(). in some of the Qstrings used in program.
                          (requesting another point, by the way who passes out them points ?)

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

                            That's the wrong solution. What you did there is pull in all headers from the widgets module which is not what you should do since it will make your build time longer as all headers will have to be parsed.

                            Just include what you use.

                            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
                            0
                            • L Offline
                              L Offline
                              Lineaxe
                              wrote on last edited by Lineaxe
                              #14

                              Ok , I have actually just read something along that line. It makes sense to me to only put in the ones that are flagged.. Anyhow, doing it that way seems to have a use. It shows that the code WILL compile in Qt 5.3 . By commenting it out will show the actual headers that are needed for each .cpp file. Then I can add them in one at a time . Very slow to compile however. Thanks again I am marking this one as solved since it all compiles now.
                              Also in this version I seem be be able to use the debugger on the arm computer :) The older version just kept freezing up on me when I went deeper into the code.

                              1 Reply Last reply
                              0

                              • Login

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