Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Qt Creator and other tools
  4. little bug when creating Q_OBJECT C++ classes
Forum Update on Monday, May 27th 2025

little bug when creating Q_OBJECT C++ classes

Scheduled Pinned Locked Moved Unsolved Qt Creator and other tools
11 Posts 4 Posters 386 Views
  • 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.
  • G Offline
    G Offline
    Groundbounce
    wrote on 11 Mar 2025, 13:13 last edited by
    #1

    If I create a C++ based on the Q_OBJECT I have a little problem. I add a Q_PROPERTY with myVariable name. Then I do refactor->create missing members.

    Then I compile and get an error in some C++ file starting with moc_"my class name". The error is that setMyVariable or setmyVariable does not exist. Essentially it's an issue with code that is automatically generated. The "convention" is to name a variable or function with the first word in the name starting lower case and any further words capitalized. Because functions are automatically generated by putting a word in front of the variable name, in one instance the first word of the variable name is capitalized as it is now the second word and in the other case this is missed.

    I don't know if there is a better place to report bugs?

    J 1 Reply Last reply 11 Mar 2025, 13:49
    0
    • G Groundbounce
      11 Mar 2025, 13:13

      If I create a C++ based on the Q_OBJECT I have a little problem. I add a Q_PROPERTY with myVariable name. Then I do refactor->create missing members.

      Then I compile and get an error in some C++ file starting with moc_"my class name". The error is that setMyVariable or setmyVariable does not exist. Essentially it's an issue with code that is automatically generated. The "convention" is to name a variable or function with the first word in the name starting lower case and any further words capitalized. Because functions are automatically generated by putting a word in front of the variable name, in one instance the first word of the variable name is capitalized as it is now the second word and in the other case this is missed.

      I don't know if there is a better place to report bugs?

      J Offline
      J Offline
      JoeCFD
      wrote on 11 Mar 2025, 13:49 last edited by
      #2

      @Groundbounce Better to show some code about how Property is applied.

      1 Reply Last reply
      0
      • C Christian Ehrlicher moved this topic from General and Desktop on 11 Mar 2025, 14:10
      • G Offline
        G Offline
        Groundbounce
        wrote on 12 Mar 2025, 07:40 last edited by
        #3

        I start typing Q_PROPERTY and the Qt IDE suggests the standard list of variable and functions, I hit enter, I set the variable type to int and the variable name to myVariable.

        Then I right click Q_PROPERTY and select refactor->create missing members, I then build the empty project with the empty class and the error around the exact spelling of setmyVariable() or setMyVariable are reported by the compiler in the moc_myclass.cpp file. This file is not created by me and is not in my source directory, it is auto generated and put into the build directory, I assume it deals with signals etc for me.

        1 Reply Last reply
        0
        • J Online
          J Online
          J.Hilk
          Moderators
          wrote on 12 Mar 2025, 08:35 last edited by
          #4

          I remember having some similar issues in previous QtCreator versions.
          Are you up to date with your QtCreator? what version are you using?


          Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


          Q: What's that?
          A: It's blue light.
          Q: What does it do?
          A: It turns blue.

          1 Reply Last reply
          0
          • G Offline
            G Offline
            Groundbounce
            wrote on 12 Mar 2025, 12:43 last edited by Groundbounce 3 Dec 2025, 12:44
            #5

            Version 15.01. I always install updates.

            I take it the warnings about the moc_.... file not being part of the project is nothing to worry about.

            1 Reply Last reply
            0
            • G Offline
              G Offline
              Groundbounce
              wrote on 14 Mar 2025, 19:22 last edited by
              #6

              I think I have the answer: https://cmake.org/cmake/help/latest/manual/cmake-qt.7.html#automoc

              So if I am guessing correctly cmake is doing something for Qt in generating code and the Qt IDE is doing another part. They don't both follow the same convention....

              C 1 Reply Last reply 14 Mar 2025, 19:53
              0
              • G Groundbounce
                14 Mar 2025, 19:22

                I think I have the answer: https://cmake.org/cmake/help/latest/manual/cmake-qt.7.html#automoc

                So if I am guessing correctly cmake is doing something for Qt in generating code and the Qt IDE is doing another part. They don't both follow the same convention....

                C Offline
                C Offline
                Christian Ehrlicher
                Lifetime Qt Champion
                wrote on 14 Mar 2025, 19:53 last edited by
                #7

                @Groundbounce said in little bug when creating Q_OBJECT C++ classes:

                They don't both follow the same convention....

                Since QtCreator is an IDE and cmake a build system I don't know what you mean with 'convention'...
                The naming of a function is neither a problem of an IDE nor the build system.

                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
                0
                • G Offline
                  G Offline
                  Groundbounce
                  wrote on 14 Mar 2025, 20:24 last edited by
                  #8

                  The function is auto generated, the function name used in autogenerated files does not match the prototype in the Q_PROPERTY declaration.

                  C 1 Reply Last reply 14 Mar 2025, 20:38
                  0
                  • G Groundbounce
                    14 Mar 2025, 20:24

                    The function is auto generated, the function name used in autogenerated files does not match the prototype in the Q_PROPERTY declaration.

                    C Offline
                    C Offline
                    Christian Ehrlicher
                    Lifetime Qt Champion
                    wrote on 14 Mar 2025, 20:38 last edited by
                    #9

                    @Groundbounce said in little bug when creating Q_OBJECT C++ classes:

                    The function is auto generated, the function name used in autogenerated files does not match the prototype in the Q_PROPERTY declaration.

                    Since the generation is done from the header file and Q_PROPERTY they can't differ. As soon as you modify the header, the moc file is re-generated.

                    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
                    0
                    • G Offline
                      G Offline
                      Groundbounce
                      wrote on 14 Mar 2025, 21:40 last edited by
                      #10

                      Well, they do! I have simply followed the instructions on Qt academy - for what they are worth..... on first build, it fails. I'm sure there is more that needs doing than what was in the tutorial, something about AUTOMOC maybe?. I suspect that like the incorrect instructions for the QRC system I will spend several hours figuring it out for myself, and like any good programmer, keep that knowledge to myself!

                      1 Reply Last reply
                      0
                      • G Offline
                        G Offline
                        Groundbounce
                        wrote on 16 Mar 2025, 11:54 last edited by
                        #11

                        The issue is that QT Creator does not capitalize the first letter of the variable when it adds a word to the start when using the refractor menu option.

                        The MOC file has it automatically renamed. As the MOC file is constantly regenerated I will need to correct the function definitions and declarations.

                        1 Reply Last reply
                        0

                        1/11

                        11 Mar 2025, 13:13

                        • Login

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