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. QCursor::pos() only works correctly if I change the Qt Creator theme.
Forum Updated to NodeBB v4.3 + New Features

QCursor::pos() only works correctly if I change the Qt Creator theme.

Scheduled Pinned Locked Moved Solved General and Desktop
12 Posts 4 Posters 689 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.
  • SGaistS SGaist

    Hi and welcome to devnet,

    What do you mean by "Qt Creator theme" ?

    Which version of Qt are you using ?
    On which platform ?

    P Offline
    P Offline
    Punkcake
    wrote on last edited by
    #3

    @SGaist Hi, I use Qt Creator 11.0.3 Based on Qt 6.4.3 (GCC 10.3.1 20210422 (Red Hat 10.3.1-1), x86_64) on Ubuntu 22.04.
    I mean theme in Preferences->Environment->Interface

    Pl45m4P 1 Reply Last reply
    0
    • P Punkcake

      @SGaist Hi, I use Qt Creator 11.0.3 Based on Qt 6.4.3 (GCC 10.3.1 20210422 (Red Hat 10.3.1-1), x86_64) on Ubuntu 22.04.
      I mean theme in Preferences->Environment->Interface

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

      @Punkcake said in QCursor::pos() only works correctly if I change the Qt Creator theme.:

      Qt Creator 11.0.3 Based on Qt 6.4.3

      That's not your Qt version you are using to create your app, that's what was used to build QtCreator itself.

      QWidget::mapToGlobal(globalPos);

      Does changing it to

      this->mapToGlobal(globalPos);
      

      make any difference?


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

      ~E. W. Dijkstra

      P 1 Reply Last reply
      2
      • Pl45m4P Pl45m4

        @Punkcake said in QCursor::pos() only works correctly if I change the Qt Creator theme.:

        Qt Creator 11.0.3 Based on Qt 6.4.3

        That's not your Qt version you are using to create your app, that's what was used to build QtCreator itself.

        QWidget::mapToGlobal(globalPos);

        Does changing it to

        this->mapToGlobal(globalPos);
        

        make any difference?

        P Offline
        P Offline
        Punkcake
        wrote on last edited by
        #5

        @Pl45m4 I use Qt 6.6.0. I change code and no any difference.

        Christian EhrlicherC 1 Reply Last reply
        0
        • P Punkcake

          @Pl45m4 I use Qt 6.6.0. I change code and no any difference.

          Christian EhrlicherC Offline
          Christian EhrlicherC Offline
          Christian Ehrlicher
          Lifetime Qt Champion
          wrote on last edited by
          #6
          class MyMainWindow : public QMainWindow
          {
          public:
              void mouseMoveEvent(QMouseEvent *ev) override
              {
                  QMainWindow::mouseMoveEvent(ev);
                  const auto globalPos = mapToGlobal(ev->pos());
                  qDebug() << globalPos << ev->globalPosition() << ev->pos();
              }
          };
          

          Works fine for me, even though the mapped and the global pos from the event differ sometimes (maybe due to rounding errors).

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

          P 1 Reply Last reply
          1
          • Christian EhrlicherC Christian Ehrlicher
            class MyMainWindow : public QMainWindow
            {
            public:
                void mouseMoveEvent(QMouseEvent *ev) override
                {
                    QMainWindow::mouseMoveEvent(ev);
                    const auto globalPos = mapToGlobal(ev->pos());
                    qDebug() << globalPos << ev->globalPosition() << ev->pos();
                }
            };
            

            Works fine for me, even though the mapped and the global pos from the event differ sometimes (maybe due to rounding errors).

            P Offline
            P Offline
            Punkcake
            wrote on last edited by
            #7

            I think the problem is not in the code

            Christian EhrlicherC 1 Reply Last reply
            0
            • P Punkcake

              I think the problem is not in the code

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

              @Punkcake But you should still output QMouseEvent::globalPosition() and check it with the calculated one. I doubt it's a Qt problem but maybe within your window manager - what window manager do you use?

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

              P 1 Reply Last reply
              0
              • Christian EhrlicherC Christian Ehrlicher

                @Punkcake But you should still output QMouseEvent::globalPosition() and check it with the calculated one. I doubt it's a Qt problem but maybe within your window manager - what window manager do you use?

                P Offline
                P Offline
                Punkcake
                wrote on last edited by
                #9

                @Christian-Ehrlicher I output QMouseEvent::globalPosition() and got the following values:
                QPoint(-111,-76) QPointF(-111,-76) QPoint(-111,-76)
                QPoint(-112,-76) QPointF(-112,-76) QPoint(-112,-76)
                QPoint(-113,-76) QPointF(-113,-76) QPoint(-113,-76)
                QPoint(-114,-76) QPointF(-114,-76) QPoint(-114,-76)
                QPoint(-115,-76) QPointF(-115,-76) QPoint(-115,-76)
                QPoint(-116,-76) QPointF(-116,-76) QPoint(-116,-76)

                How can I find out which window manager I'm using?

                P 1 Reply Last reply
                0
                • P Punkcake

                  @Christian-Ehrlicher I output QMouseEvent::globalPosition() and got the following values:
                  QPoint(-111,-76) QPointF(-111,-76) QPoint(-111,-76)
                  QPoint(-112,-76) QPointF(-112,-76) QPoint(-112,-76)
                  QPoint(-113,-76) QPointF(-113,-76) QPoint(-113,-76)
                  QPoint(-114,-76) QPointF(-114,-76) QPoint(-114,-76)
                  QPoint(-115,-76) QPointF(-115,-76) QPoint(-115,-76)
                  QPoint(-116,-76) QPointF(-116,-76) QPoint(-116,-76)

                  How can I find out which window manager I'm using?

                  P Offline
                  P Offline
                  Punkcake
                  wrote on last edited by
                  #10

                  Maybe the problem is related to virtualization.

                  Christian EhrlicherC 1 Reply Last reply
                  0
                  • P Punkcake

                    Maybe the problem is related to virtualization.

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

                    @Punkcake said in QCursor::pos() only works correctly if I change the Qt Creator theme.:

                    Maybe the problem is related to virtualization.

                    Don't know - works fine with VirtualBox here. I think it's the window manager

                    How can I find out which window manager I'm using?

                    You should know if you run Gnome or KDE or whatever.

                    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
                    1
                    • P Offline
                      P Offline
                      Punkcake
                      wrote on last edited by
                      #12

                      @Christian-Ehrlicher I disable Wayland in /etc/gdm3/custom.conf and reboot Ubuntu, everything worked correctly.

                      Thanks for the help!

                      1 Reply Last reply
                      0
                      • P Punkcake has marked this topic as solved on

                      • Login

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