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. QMouseEvent on button click
Forum Updated to NodeBB v4.3 + New Features

QMouseEvent on button click

Scheduled Pinned Locked Moved Solved General and Desktop
qmouseevent
15 Posts 2 Posters 7.2k 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.
  • U Offline
    U Offline
    uruloke
    wrote on 8 Nov 2015, 09:58 last edited by
    #1

    Hello,
    I am fairly new to Qt and would like to know how I can use QMouseEvent? I have tried a lot of ways but I cannot get it to work.

    What I wanna do is when I click a button I want it to setText to the mouse X and Y coordinates.

    Any help appreciated

    M 1 Reply Last reply 8 Nov 2015, 11:46
    0
    • U uruloke
      8 Nov 2015, 09:58

      Hello,
      I am fairly new to Qt and would like to know how I can use QMouseEvent? I have tried a lot of ways but I cannot get it to work.

      What I wanna do is when I click a button I want it to setText to the mouse X and Y coordinates.

      Any help appreciated

      M Offline
      M Offline
      mrjj
      Lifetime Qt Champion
      wrote on 8 Nov 2015, 11:46 last edited by
      #2

      @uruloke
      ok
      1: place button on mainform
      2: right click button
      3: select Goto Slot
      4: Select "released" from the list
      Now you got the click handler

      void MainWindow::on_pushButton_released() {
        QPoint p = mapFromGlobal(QCursor::pos());
          ui->pushButton->setText( QString::number(p.x()) + "," + QString::number(p.x()));
      }
      
      U 1 Reply Last reply 8 Nov 2015, 11:54
      1
      • M mrjj
        8 Nov 2015, 11:46

        @uruloke
        ok
        1: place button on mainform
        2: right click button
        3: select Goto Slot
        4: Select "released" from the list
        Now you got the click handler

        void MainWindow::on_pushButton_released() {
          QPoint p = mapFromGlobal(QCursor::pos());
            ui->pushButton->setText( QString::number(p.x()) + "," + QString::number(p.x()));
        }
        
        U Offline
        U Offline
        uruloke
        wrote on 8 Nov 2015, 11:54 last edited by
        #3

        @mrjj Thank you @mrjj.
        It was this line here I had trouble with defining myself
        QPoint p = mapFromGlobal(QCursor::pos());

        M 1 Reply Last reply 8 Nov 2015, 11:57
        0
        • U uruloke
          8 Nov 2015, 11:54

          @mrjj Thank you @mrjj.
          It was this line here I had trouble with defining myself
          QPoint p = mapFromGlobal(QCursor::pos());

          M Offline
          M Offline
          mrjj
          Lifetime Qt Champion
          wrote on 8 Nov 2015, 11:57 last edited by mrjj 11 Aug 2015, 11:58
          #4

          @uruloke
          well also I forgot to mention
          to use QMouseEvent
          you would override
          void mousePressEvent(QMouseEvent *eventPress);
          for the widget.
          like here
          http://doc.qt.io/qt-5/qtwidgets-widgets-scribble-example.html

          U 1 Reply Last reply 8 Nov 2015, 12:03
          0
          • M mrjj
            8 Nov 2015, 11:57

            @uruloke
            well also I forgot to mention
            to use QMouseEvent
            you would override
            void mousePressEvent(QMouseEvent *eventPress);
            for the widget.
            like here
            http://doc.qt.io/qt-5/qtwidgets-widgets-scribble-example.html

            U Offline
            U Offline
            uruloke
            wrote on 8 Nov 2015, 12:03 last edited by uruloke 11 Aug 2015, 12:03
            #5

            @mrjj
            Okay, so Qcursor works for me, but I cannot get QMouseEventto work correctly.

            void MainWindow::on_screen2Button_clicked(QMouseEvent *eventPress) { QPoint p = mapFromGlobal(eventPress->globalPos()); ui->pixMap->setText( QString::number(p.x()) + "," + QString::number(p.x())); }
            It doesn't give me any errors, but it doesn't print the text out either, it worked with Qcursor though

            EDIT 1:
            cool, will look into the example.

            M 1 Reply Last reply 8 Nov 2015, 12:07
            0
            • U uruloke
              8 Nov 2015, 12:03

              @mrjj
              Okay, so Qcursor works for me, but I cannot get QMouseEventto work correctly.

              void MainWindow::on_screen2Button_clicked(QMouseEvent *eventPress) { QPoint p = mapFromGlobal(eventPress->globalPos()); ui->pixMap->setText( QString::number(p.x()) + "," + QString::number(p.x())); }
              It doesn't give me any errors, but it doesn't print the text out either, it worked with Qcursor though

              EDIT 1:
              cool, will look into the example.

              M Offline
              M Offline
              mrjj
              Lifetime Qt Champion
              wrote on 8 Nov 2015, 12:07 last edited by mrjj 11 Aug 2015, 12:08
              #6

              @uruloke
              you have to add

              protected:
              void mousePressEvent(QMouseEvent *eventPress);

              to mainwindow .H
              and
              void mousePressEvent(QMouseEvent *eventPress) {
              }
              in .cpp

              its a virtual function and must be named like this.
              It will then be called by system.
              What you seems to try is to put MouseEvent *eventPress to a button click.
              and it will be zero as it not filled out by system since a buttons click is not the same as mouse click.
              so you sort of give it a empty QMouseEvent.

              Note its protected: that is important.

              U 1 Reply Last reply 8 Nov 2015, 12:14
              0
              • M mrjj
                8 Nov 2015, 12:07

                @uruloke
                you have to add

                protected:
                void mousePressEvent(QMouseEvent *eventPress);

                to mainwindow .H
                and
                void mousePressEvent(QMouseEvent *eventPress) {
                }
                in .cpp

                its a virtual function and must be named like this.
                It will then be called by system.
                What you seems to try is to put MouseEvent *eventPress to a button click.
                and it will be zero as it not filled out by system since a buttons click is not the same as mouse click.
                so you sort of give it a empty QMouseEvent.

                Note its protected: that is important.

                U Offline
                U Offline
                uruloke
                wrote on 8 Nov 2015, 12:14 last edited by
                #7

                @mrjj
                Ah so if I want it to run when a mouse is pressed I just have to run the mousePressEvent(QMouseEvent *eventPress)inside my onButtonClicked event?

                M 1 Reply Last reply 8 Nov 2015, 12:16
                0
                • U uruloke
                  8 Nov 2015, 12:14

                  @mrjj
                  Ah so if I want it to run when a mouse is pressed I just have to run the mousePressEvent(QMouseEvent *eventPress)inside my onButtonClicked event?

                  M Offline
                  M Offline
                  mrjj
                  Lifetime Qt Champion
                  wrote on 8 Nov 2015, 12:16 last edited by
                  #8

                  @uruloke
                  well Im not sure I understand.
                  Why dont you just run when button is clicked ?

                  mousePressEvent is for click on some spot on mainwindow where no control.

                  Dont call the mousePressEvent your self. system call it.

                  U 1 Reply Last reply 8 Nov 2015, 12:23
                  0
                  • M mrjj
                    8 Nov 2015, 12:16

                    @uruloke
                    well Im not sure I understand.
                    Why dont you just run when button is clicked ?

                    mousePressEvent is for click on some spot on mainwindow where no control.

                    Dont call the mousePressEvent your self. system call it.

                    U Offline
                    U Offline
                    uruloke
                    wrote on 8 Nov 2015, 12:23 last edited by
                    #9

                    @mrjj
                    Ah, yeah I forgot that it was an event :)

                    void mousePressEvent(QMouseEvent *eventPress) { QPoint p = mapFromGlobal(eventPress->globalPos()); ui->pixMap->setText( QString::number(p.x()) + "," + QString::number(p.x())); }

                    I get errors on mapFromGlobal now and ui, didn't get that before.

                    M 1 Reply Last reply 8 Nov 2015, 12:26
                    0
                    • U uruloke
                      8 Nov 2015, 12:23

                      @mrjj
                      Ah, yeah I forgot that it was an event :)

                      void mousePressEvent(QMouseEvent *eventPress) { QPoint p = mapFromGlobal(eventPress->globalPos()); ui->pixMap->setText( QString::number(p.x()) + "," + QString::number(p.x())); }

                      I get errors on mapFromGlobal now and ui, didn't get that before.

                      M Offline
                      M Offline
                      mrjj
                      Lifetime Qt Champion
                      wrote on 8 Nov 2015, 12:26 last edited by mrjj 11 Aug 2015, 12:28
                      #10

                      @uruloke
                      try with

                      eventPress->pos().x();
                      eventPress->pos().y();

                      and no mapFromGlobal

                      oh and make sure its maiwindow::mousePressEvent(...) else it wont compile
                      if you are in the .cpp file.

                      U 1 Reply Last reply 8 Nov 2015, 12:31
                      1
                      • M mrjj
                        8 Nov 2015, 12:26

                        @uruloke
                        try with

                        eventPress->pos().x();
                        eventPress->pos().y();

                        and no mapFromGlobal

                        oh and make sure its maiwindow::mousePressEvent(...) else it wont compile
                        if you are in the .cpp file.

                        U Offline
                        U Offline
                        uruloke
                        wrote on 8 Nov 2015, 12:31 last edited by
                        #11

                        @mrjj
                        thanks a lot for the help.
                        It was just the mapFromGlobal that fucked it up.
                        It worked when I removed that.

                        QPoint p = eventPress->globalPos();
                        ui->pixMap->setText( QString::number(p.x()) + "," + QString::number(p.y()));

                        M 1 Reply Last reply 8 Nov 2015, 12:33
                        0
                        • U uruloke
                          8 Nov 2015, 12:31

                          @mrjj
                          thanks a lot for the help.
                          It was just the mapFromGlobal that fucked it up.
                          It worked when I removed that.

                          QPoint p = eventPress->globalPos();
                          ui->pixMap->setText( QString::number(p.x()) + "," + QString::number(p.y()));

                          M Offline
                          M Offline
                          mrjj
                          Lifetime Qt Champion
                          wrote on 8 Nov 2015, 12:33 last edited by
                          #12

                          @uruloke
                          ok.super.

                          Can I ask what you are programming ?

                          U 1 Reply Last reply 8 Nov 2015, 12:58
                          0
                          • M mrjj
                            8 Nov 2015, 12:33

                            @uruloke
                            ok.super.

                            Can I ask what you are programming ?

                            U Offline
                            U Offline
                            uruloke
                            wrote on 8 Nov 2015, 12:58 last edited by
                            #13

                            @mrjj Sure, I am making a program to take screenshots with. So I need the mouse global position to mark the area to screenshot.

                            M 1 Reply Last reply 8 Nov 2015, 13:00
                            0
                            • U uruloke
                              8 Nov 2015, 12:58

                              @mrjj Sure, I am making a program to take screenshots with. So I need the mouse global position to mark the area to screenshot.

                              M Offline
                              M Offline
                              mrjj
                              Lifetime Qt Champion
                              wrote on 8 Nov 2015, 13:00 last edited by
                              #14

                              @uruloke
                              ahh. such beast. :)
                              make sure to borrow from
                              http://doc.qt.io/qt-5/qtwidgets-desktop-screenshot-example.html

                              U 1 Reply Last reply 8 Nov 2015, 13:11
                              0
                              • M mrjj
                                8 Nov 2015, 13:00

                                @uruloke
                                ahh. such beast. :)
                                make sure to borrow from
                                http://doc.qt.io/qt-5/qtwidgets-desktop-screenshot-example.html

                                U Offline
                                U Offline
                                uruloke
                                wrote on 8 Nov 2015, 13:11 last edited by
                                #15

                                @mrjj
                                I will, thanks for everything :)

                                1 Reply Last reply
                                0

                                1/15

                                8 Nov 2015, 09:58

                                • Login

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