Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Qt for Python
  4. How to integrate a cursor in a QtWidgets app
Qt 6.11 is out! See what's new in the release blog

How to integrate a cursor in a QtWidgets app

Scheduled Pinned Locked Moved Solved Qt for Python
23 Posts 4 Posters 7.3k 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.
  • P Offline
    P Offline
    Pianissimo89
    wrote on last edited by
    #10

    @SGaist thank you for the tip. it seems easy to create any line plot for example

    data = 500* np.random.normal(size=(2, 2))
    plot = scene.Line(data, parent=self.view.scene, color="r")
    

    I just have to figure out now how to attach mouse events on it.

    1 Reply Last reply
    0
    • P Offline
      P Offline
      Pianissimo89
      wrote on last edited by Pianissimo89
      #11

      by adding these two methodes i don t get any prints. why is that?

      def on_mouse_press(self, event):
         print(f"Press: {event.button}= | {event.buttons}=")
      
      def on_mouse_release(self, event):
         print(f"Release: {event.button}= | {event.buttons}=")
      
      jsulmJ 1 Reply Last reply
      0
      • P Pianissimo89

        by adding these two methodes i don t get any prints. why is that?

        def on_mouse_press(self, event):
           print(f"Press: {event.button}= | {event.buttons}=")
        
        def on_mouse_release(self, event):
           print(f"Release: {event.button}= | {event.buttons}=")
        
        jsulmJ Offline
        jsulmJ Offline
        jsulm
        Lifetime Qt Champion
        wrote on last edited by
        #12

        @Pianissimo89 said in How to integrate a cursor in a QtWidgets app:

        why is that?

        Because it's wrong.
        Please check correct event handler names here: https://doc.qt.io/qt-6/qwidget.html

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

        P 1 Reply Last reply
        0
        • jsulmJ jsulm

          @Pianissimo89 said in How to integrate a cursor in a QtWidgets app:

          why is that?

          Because it's wrong.
          Please check correct event handler names here: https://doc.qt.io/qt-6/qwidget.html

          P Offline
          P Offline
          Pianissimo89
          wrote on last edited by
          #13

          @jsulm thank you for your help. however i searched bit i am trying this snippet of code. it does not work

          def mousePressEvent(self, event):
                if event.button() == self.fLeftButton:
                    print("pressed left")
                if event.button() == self.fRightButton:
                    print("pressed right")
          
          JonBJ 1 Reply Last reply
          0
          • P Pianissimo89

            @jsulm thank you for your help. however i searched bit i am trying this snippet of code. it does not work

            def mousePressEvent(self, event):
                  if event.button() == self.fLeftButton:
                      print("pressed left")
                  if event.button() == self.fRightButton:
                      print("pressed right")
            
            JonBJ Online
            JonBJ Online
            JonB
            wrote on last edited by
            #14

            @Pianissimo89 said in How to integrate a cursor in a QtWidgets app:

            it does not work

            Does not print what you expect? Does not get called at all? What class is this method defined inside? Since we do not know what might be in your self.fLeftButton/fRightButton nobody can know whether your code is correct. Start by putting in an unconditional print() to see you are getting here, after that deal with the button code.

            P 1 Reply Last reply
            0
            • JonBJ JonB

              @Pianissimo89 said in How to integrate a cursor in a QtWidgets app:

              it does not work

              Does not print what you expect? Does not get called at all? What class is this method defined inside? Since we do not know what might be in your self.fLeftButton/fRightButton nobody can know whether your code is correct. Start by putting in an unconditional print() to see you are getting here, after that deal with the button code.

              P Offline
              P Offline
              Pianissimo89
              wrote on last edited by
              #15

              @JonB i put it in class MainWindow after the init (whole code is in the first message) unconditional print independent of buttons also does not print. so it does not detected

              JonBJ 1 Reply Last reply
              0
              • P Pianissimo89

                @JonB i put it in class MainWindow after the init (whole code is in the first message) unconditional print independent of buttons also does not print. so it does not detected

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

                @Pianissimo89
                And where are you pressing the mouse over? If I am not mistaken this will only work when directly over the main window, not a sub-widget. You might check it works in a standalone program with just a QMainWindow.

                P 1 Reply Last reply
                0
                • JonBJ JonB

                  @Pianissimo89
                  And where are you pressing the mouse over? If I am not mistaken this will only work when directly over the main window, not a sub-widget. You might check it works in a standalone program with just a QMainWindow.

                  P Offline
                  P Offline
                  Pianissimo89
                  wrote on last edited by
                  #17

                  @JonB I see your point. i clicked outside the window we see when running the program (and making the window bigger so we can click outside of the square... he we get the print...)

                  but this is obviously not what I need. i have trouble understanding where i should put this event so i can get it even when i am on the canvas...

                  JonBJ 1 Reply Last reply
                  0
                  • P Pianissimo89

                    @JonB I see your point. i clicked outside the window we see when running the program (and making the window bigger so we can click outside of the square... he we get the print...)

                    but this is obviously not what I need. i have trouble understanding where i should put this event so i can get it even when i am on the canvas...

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

                    @Pianissimo89 said in How to integrate a cursor in a QtWidgets app:

                    when i am on the canvas...

                    You would need that when you click on the canvas then. But as I wrote at the start I know nothing about how that OpenGL canvas or whatever it is works with Qt. I am not sure whether you would get, or why you would even want, main window mouse click events if you are clicking on some other widget/canvas/outside the main window --- I would expect to handle mouse events there.

                    P 1 Reply Last reply
                    0
                    • JonBJ JonB

                      @Pianissimo89 said in How to integrate a cursor in a QtWidgets app:

                      when i am on the canvas...

                      You would need that when you click on the canvas then. But as I wrote at the start I know nothing about how that OpenGL canvas or whatever it is works with Qt. I am not sure whether you would get, or why you would even want, main window mouse click events if you are clicking on some other widget/canvas/outside the main window --- I would expect to handle mouse events there.

                      P Offline
                      P Offline
                      Pianissimo89
                      wrote on last edited by
                      #19

                      @JonB thanks again for the tips. i think i solved the problem by creating a dedicated class

                      class my_canvas(scene.SceneCanvas):
                          def __init__(self):
                              super().__init__(keys="interactive")
                      
                          def on_mouse_press(self, event):
                              print("hello")
                      
                      JonBJ jsulmJ 2 Replies Last reply
                      0
                      • P Pianissimo89

                        @JonB thanks again for the tips. i think i solved the problem by creating a dedicated class

                        class my_canvas(scene.SceneCanvas):
                            def __init__(self):
                                super().__init__(keys="interactive")
                        
                            def on_mouse_press(self, event):
                                print("hello")
                        
                        JonBJ Online
                        JonBJ Online
                        JonB
                        wrote on last edited by
                        #20

                        @Pianissimo89
                        So it looks like the mouse press you want to capture has nothing to do with Qt and its windows, it's just within the canvas. Which makes sense.

                        1 Reply Last reply
                        0
                        • P Pianissimo89

                          @JonB thanks again for the tips. i think i solved the problem by creating a dedicated class

                          class my_canvas(scene.SceneCanvas):
                              def __init__(self):
                                  super().__init__(keys="interactive")
                          
                              def on_mouse_press(self, event):
                                  print("hello")
                          
                          jsulmJ Offline
                          jsulmJ Offline
                          jsulm
                          Lifetime Qt Champion
                          wrote on last edited by
                          #21

                          @Pianissimo89 said in How to integrate a cursor in a QtWidgets app:

                          on_mouse_press

                          mousePressEvent

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

                          JonBJ 1 Reply Last reply
                          0
                          • jsulmJ jsulm

                            @Pianissimo89 said in How to integrate a cursor in a QtWidgets app:

                            on_mouse_press

                            mousePressEvent

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

                            @jsulm
                            I believe you are mistaking the issue! :) The OP says this code works as-is. He puts this code in a class derived from scene.SceneCanvas, which is some OpenGL class, not Qt. I believe the mouse events are being handled inside that, not Qt, so if that wants a on_mouse_press() method so be it.

                            Correct me if I am wrong. Of course if that code does not actually work as the OP implies then it's a different matter!

                            P 1 Reply Last reply
                            1
                            • JonBJ JonB

                              @jsulm
                              I believe you are mistaking the issue! :) The OP says this code works as-is. He puts this code in a class derived from scene.SceneCanvas, which is some OpenGL class, not Qt. I believe the mouse events are being handled inside that, not Qt, so if that wants a on_mouse_press() method so be it.

                              Correct me if I am wrong. Of course if that code does not actually work as the OP implies then it's a different matter!

                              P Offline
                              P Offline
                              Pianissimo89
                              wrote on last edited by Pianissimo89
                              #23

                              @JonB you understood me right. i have to follow this code because it is going to be integrated in another code where I need it to be OpenGL.
                              and yes i confirm what you say about the mouse events. seems that inside the opengl canvas we need dedicated mouse events . outside of the windows is Qt where mousePressEvent works. these are two different frameworks.

                              I thank all the contributors for helping me. As I am new to QtWidgets.

                              now i am trying to move the cursor i created. I set now the question as resolved as it does not involve Qt anymore

                              1 Reply Last reply
                              1

                              • Login

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