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. How to build real template class?
Forum Updated to NodeBB v4.3 + New Features

How to build real template class?

Scheduled Pinned Locked Moved Unsolved General and Desktop
26 Posts 11 Posters 2.6k Views 6 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.
  • A Offline
    A Offline
    Anonymous_Banned275
    wrote on last edited by Anonymous_Banned275
    #1

    Using Qt to build C++ class I end up with this (fake) "template class" declaration.
    That is what Qt dementation calls it -template class .

    Is there a way I can build REAL template class using Qt?

    ADDENDUM
    It is KISS - just add template <typename T> as type, BUT
    then Q_OBJECT is "not supported" !

    which brings up another question
    if ALL Qt "classes" inherit from QObject anyway

    so what does placing Q_OBJECT (insert its name here )
    do anyway?

    Looks as I poked stick into hornets nest - all kinds of "stuff" I took for granted so far.

    // cut an paste hack
    
    template <typename T> class TEST_Template_Hack : public QObject
    {
        Q_OBJECT
    public:
        explicit TEST_Template_Hack(QObject *parent = nullptr);
    
    signals:
    
    };
    
    #ifndef TEST_TEMPLATE_H
    #define TEST_TEMPLATE_H
    
    #include <QObject>
    
    class TEST_Template : public QObject
    {
        Q_OBJECT
    public:
        explicit TEST_Template(QObject *parent = nullptr);
    
    signals:
    
    };
    
    #endif // TEST_TEMPLATE_H
    
    1 Reply Last reply
    0
    • Axel SpoerlA Offline
      Axel SpoerlA Offline
      Axel Spoerl
      Moderators
      wrote on last edited by
      #2

      @AnneRanch
      A template class is correct if it compiles, and wrong if it doesn't.
      A class is either a template class, or it's not.
      I don't understand what you mean by "fake" and "real".

      The only limitation in Qt is that you can't use Q_OBJECT in a template class.
      But the template class can inherit from a class, that does have the Q_OBJECT macro.

      #include <QObject>
      
      class TEST : public QObject
      {
          Q_OBJECT
      public:
          explicit TEST_Template(QObject *parent = nullptr);
      
      signals:
          void aSignal(int number);
      };
      
      template <typename T>
      class TEST_Template : public TEST
      {
          ...
      };
      

      Looks as I poked stick into hornets nest - all kinds of "stuff" I took for granted so far.

      Don't worry, no hornets in this neighbourhood.

      Software Engineer
      The Qt Company, Oslo

      1 Reply Last reply
      1
      • A Offline
        A Offline
        Asperamanca
        wrote on last edited by
        #3

        The important question is: What are you trying to achieve?
        I struggle to see a compelling use case for a templated QObject, but I might be missing something...

        1 Reply Last reply
        2
        • A Offline
          A Offline
          Anonymous_Banned275
          wrote on last edited by
          #4

          I do not agree with your opinion : What are you trying to achieve?
          My missed point is - Qt documentation call the result of their process of building a class a " template". It is NOT template TYPE by definition, it is Qt miss use of a term.
          I have no illusion that pointing that out will "achieve " anything. Qt is pushing its own terminology and continue to do so irregardless of me , a user , opinion. They are the experts , in their opinions / view.
          My only "achievement' could be to make others users of Qt aware. That is about all I could hope for.

          Axel SpoerlA 1 Reply Last reply
          0
          • Christian EhrlicherC Online
            Christian EhrlicherC Online
            Christian Ehrlicher
            Lifetime Qt Champion
            wrote on last edited by
            #5

            It is creating a template for a class derived from QObject, not a template class. You are mixing different stuff.

            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
            • A Offline
              A Offline
              Asperamanca
              wrote on last edited by
              #6

              Could you link the relevant documentation page?

              1 Reply Last reply
              0
              • A Offline
                A Offline
                Anonymous_Banned275
                wrote on last edited by
                #7

                https://wiki.qt.io/Qt_for_Beginners

                FeRDNYCF 1 Reply Last reply
                0
                • A Offline
                  A Offline
                  Asperamanca
                  wrote on last edited by
                  #8

                  "Template" in this context is simply an English word in the same way as you may have a "Template for a presentation", i.e. something generic to help you get started, from which you can then customize what you want.

                  1 Reply Last reply
                  7
                  • A Offline
                    A Offline
                    Anonymous_Banned275
                    wrote on last edited by
                    #9

                    I disagree , especially when it is " for beginners" .
                    Cheers

                    A 1 Reply Last reply
                    0
                    • A Anonymous_Banned275

                      I do not agree with your opinion : What are you trying to achieve?
                      My missed point is - Qt documentation call the result of their process of building a class a " template". It is NOT template TYPE by definition, it is Qt miss use of a term.
                      I have no illusion that pointing that out will "achieve " anything. Qt is pushing its own terminology and continue to do so irregardless of me , a user , opinion. They are the experts , in their opinions / view.
                      My only "achievement' could be to make others users of Qt aware. That is about all I could hope for.

                      Axel SpoerlA Offline
                      Axel SpoerlA Offline
                      Axel Spoerl
                      Moderators
                      wrote on last edited by
                      #10

                      It is NOT template TYPE by definition, it is Qt miss use of a term.

                      That's simply wrong, @AnneRanch.
                      The misunderstanding is entirely on your side.

                      As @Asperamanca indicated, the term "template" is standard English vocabulary. If you reserve it exclusively for what is a template in C++, you limit your own vocabulary.

                      The documentation page you referred, is truly outdated, but it doesn't contain anything wrong. It uses word "template" in two different contexts:

                      • TEMPLATE directive of qmake
                      • creating a class definition, following a template (as @Asperamanca already explained)

                      The page does not contain any mention of the term "template" in C++ code. That makes the context pretty obvious for any C++ programmer, beginners included.

                      Software Engineer
                      The Qt Company, Oslo

                      1 Reply Last reply
                      4
                      • A Anonymous_Banned275

                        I disagree , especially when it is " for beginners" .
                        Cheers

                        A Offline
                        A Offline
                        Asperamanca
                        wrote on last edited by
                        #11

                        @AnneRanch said in How to build real template class?:

                        I disagree , especially when it is " for beginners" .
                        Cheers

                        I agree that the conflict of terms here is a bit unfortunate. Then again, I cannot come up with a more fitting term for "template" in this context. If you have a better idea, you can also write documentation suggestion to bugreports.qt.io

                        Pl45m4P 1 Reply Last reply
                        2
                        • A Asperamanca

                          @AnneRanch said in How to build real template class?:

                          I disagree , especially when it is " for beginners" .
                          Cheers

                          I agree that the conflict of terms here is a bit unfortunate. Then again, I cannot come up with a more fitting term for "template" in this context. If you have a better idea, you can also write documentation suggestion to bugreports.qt.io

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

                          @Asperamanca said in How to build real template class?:

                          I cannot come up with a more fitting term for "template" in this context

                          I can think of another term (don't know if better or not), but I'm not allowed to comment :)))
                          The first part is a color, the second part of the word is what a certain I/O device does :)))


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

                          ~E. W. Dijkstra

                          R 1 Reply Last reply
                          0
                          • Pl45m4P Pl45m4

                            @Asperamanca said in How to build real template class?:

                            I cannot come up with a more fitting term for "template" in this context

                            I can think of another term (don't know if better or not), but I'm not allowed to comment :)))
                            The first part is a color, the second part of the word is what a certain I/O device does :)))

                            R Offline
                            R Offline
                            Redman
                            wrote on last edited by
                            #13

                            @Pl45m4 yellow fax

                            Pl45m4P Axel SpoerlA 2 Replies Last reply
                            1
                            • R Redman

                              @Pl45m4 yellow fax

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

                              @Redman said in How to build real template class?:

                              yellow fax

                              Yep. That's it :))
                              You're good :D


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

                              ~E. W. Dijkstra

                              1 Reply Last reply
                              0
                              • R Redman

                                @Pl45m4 yellow fax

                                Axel SpoerlA Offline
                                Axel SpoerlA Offline
                                Axel Spoerl
                                Moderators
                                wrote on last edited by
                                #15

                                @Redman
                                C'mon, ever seen a yellow fax?
                                He meant orange jam, obviously.

                                Software Engineer
                                The Qt Company, Oslo

                                Pl45m4P 1 Reply Last reply
                                1
                                • Axel SpoerlA Axel Spoerl

                                  @Redman
                                  C'mon, ever seen a yellow fax?
                                  He meant orange jam, obviously.

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

                                  @Axel-Spoerl said in How to build real template class?:

                                  He meant orange jam, obviously.

                                  Actually I was referring to commonly used term "reddisplay".
                                  ... but I agreed to @Redman so he wouldn't feel bad :)))


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

                                  ~E. W. Dijkstra

                                  1 Reply Last reply
                                  2
                                  • jsulmJ Offline
                                    jsulmJ Offline
                                    jsulm
                                    Lifetime Qt Champion
                                    wrote on last edited by
                                    #17

                                    bluescreen :-)

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

                                    Pl45m4P 1 Reply Last reply
                                    3
                                    • jsulmJ jsulm

                                      bluescreen :-)

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

                                      @jsulm said in How to build real template class?:

                                      bluescreen :-)

                                      That's what you get when using yellow fax wrong :))


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

                                      ~E. W. Dijkstra

                                      1 Reply Last reply
                                      1
                                      • Axel SpoerlA Offline
                                        Axel SpoerlA Offline
                                        Axel Spoerl
                                        Moderators
                                        wrote on last edited by Axel Spoerl
                                        #19

                                        I got it: Black Label!
                                        Edit: Green Card.

                                        Software Engineer
                                        The Qt Company, Oslo

                                        1 Reply Last reply
                                        0
                                        • J.HilkJ Offline
                                          J.HilkJ Offline
                                          J.Hilk
                                          Moderators
                                          wrote on last edited by
                                          #20

                                          This took me exceedingly long to get omfg.


                                          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

                                          • Login

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