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. Is there a list of QGraphicsItem types?

Is there a list of QGraphicsItem types?

Scheduled Pinned Locked Moved Solved General and Desktop
12 Posts 3 Posters 1.2k Views 1 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.
  • idlefrogI Offline
    idlefrogI Offline
    idlefrog
    wrote on last edited by
    #1

    This is probably a rather nooby question, but for the life of me I can't find a page which lists all the type values for QGraphicsItems.
    i.e. values returned from QGraphicsItem::type()

    Of course I know I can extract a list from qgraphicsitem.h but isn't it formally documented somewhere?
    Having searched the forum, I only see mention of qgraphicsitem_cast, and QGraphicsItem::Type.

    Any help much appreciated!

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

      If you want to distinguish between your custom types and use qgraphicsitem_cast<> you have to define unique id's returned by type().

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

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

        No there is not. But why do you need it?

        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
        • idlefrogI Offline
          idlefrogI Offline
          idlefrog
          wrote on last edited by idlefrog
          #3

          @Christian-Ehrlicher I'm trying to identify all the objects in the scene, and avoid placing a context menu over certain items. Although perhaps I should know what's in my scene and I have this back to front. But there are many items small & big.

          JonBJ 1 Reply Last reply
          0
          • idlefrogI idlefrog

            @Christian-Ehrlicher I'm trying to identify all the objects in the scene, and avoid placing a context menu over certain items. Although perhaps I should know what's in my scene and I have this back to front. But there are many items small & big.

            JonBJ Online
            JonBJ Online
            JonB
            wrote on last edited by
            #4

            @idlefrog
            If you use woboq to look at the source for QGraphicsItem::type() you'll come across e.g.

            class Q_WIDGETS_EXPORT QGraphicsEllipseItem
             enum { Type = 4 };
            int type() const override;
            int QGraphicsEllipseItem::type() const
            {
                return Type;
            }
            

            in various files. So it's done via an "anonymous enum", defined in each derived class. I can't see anything which gathers those all together for you.

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

              But why you can't simply compare the type() integer with the ones you want to be able to show a context menu and use e.g. QGraphicsEllipseItem::Type instead an integer?

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

              idlefrogI 1 Reply Last reply
              0
              • Christian EhrlicherC Christian Ehrlicher

                But why you can't simply compare the type() integer with the ones you want to be able to show a context menu and use e.g. QGraphicsEllipseItem::Type instead an integer?

                idlefrogI Offline
                idlefrogI Offline
                idlefrog
                wrote on last edited by idlefrog
                #6

                @Christian-Ehrlicher Well, I don't know what they are, or where they are made, and they don't have any object name. I'm trying to reverse engineer in a way. It seems as if I will have to add 'type()' methods to all the prime suspects, but it's not a systematic approach.

                Which makes me think that perhaps my approach is all wrong here.
                Anyhow, your help is much appreciated! Any suggestions are welcome :)

                Christian EhrlicherC 1 Reply Last reply
                0
                • JonBJ JonB

                  @idlefrog
                  If you use woboq to look at the source for QGraphicsItem::type() you'll come across e.g.

                  class Q_WIDGETS_EXPORT QGraphicsEllipseItem
                   enum { Type = 4 };
                  int type() const override;
                  int QGraphicsEllipseItem::type() const
                  {
                      return Type;
                  }
                  

                  in various files. So it's done via an "anonymous enum", defined in each derived class. I can't see anything which gathers those all together for you.

                  idlefrogI Offline
                  idlefrogI Offline
                  idlefrog
                  wrote on last edited by
                  #7

                  @JonB Thanks! Although for now, I'll just make do with grepping the qgraphicsitem.h if need be. Am currently reviewing / inspecting the code to understand it, and perhaps find out who's who in my scene!

                  1 Reply Last reply
                  0
                  • idlefrogI idlefrog

                    @Christian-Ehrlicher Well, I don't know what they are, or where they are made, and they don't have any object name. I'm trying to reverse engineer in a way. It seems as if I will have to add 'type()' methods to all the prime suspects, but it's not a systematic approach.

                    Which makes me think that perhaps my approach is all wrong here.
                    Anyhow, your help is much appreciated! Any suggestions are welcome :)

                    Christian EhrlicherC Offline
                    Christian EhrlicherC Offline
                    Christian Ehrlicher
                    Lifetime Qt Champion
                    wrote on last edited by
                    #8

                    @idlefrog said in Is there a list of QGraphicsItem types?:

                    It seems as if I will have to add 'type()' methods to all the prime suspect

                    You're aware that such a function already exists? Still don't understand the problem.

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

                    idlefrogI 1 Reply Last reply
                    0
                    • Christian EhrlicherC Christian Ehrlicher

                      @idlefrog said in Is there a list of QGraphicsItem types?:

                      It seems as if I will have to add 'type()' methods to all the prime suspect

                      You're aware that such a function already exists? Still don't understand the problem.

                      idlefrogI Offline
                      idlefrogI Offline
                      idlefrog
                      wrote on last edited by
                      #9

                      @Christian-Ehrlicher Sorry, I probably am not being that clear. But I have a number of derived classes from QGraphicsItem, but even with the debugger can't identify them. So if I add 'type()' methods to those, I should start to identify the classes that I'm clicking on, and were they are. But knowing their base type is of course a start.

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

                        If you want to distinguish between your custom types and use qgraphicsitem_cast<> you have to define unique id's returned by type().

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

                        idlefrogI 1 Reply Last reply
                        1
                        • Christian EhrlicherC Christian Ehrlicher

                          If you want to distinguish between your custom types and use qgraphicsitem_cast<> you have to define unique id's returned by type().

                          idlefrogI Offline
                          idlefrogI Offline
                          idlefrog
                          wrote on last edited by
                          #11

                          @Christian-Ehrlicher Thanks... am just starting to do that. Although I wondering how best to allocate the ID's without creating some god enum object. So I may just for settle on picking unique/random IDs for just those that I suspect are under the cursor.

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

                            Noone stops you from defining an enum by yourself starting with Qt::UserType.

                            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
                            3

                            • Login

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