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. Keyboard focus lost when setCentralWidget(view)
Forum Updated to NodeBB v4.3 + New Features

Keyboard focus lost when setCentralWidget(view)

Scheduled Pinned Locked Moved Unsolved General and Desktop
12 Posts 2 Posters 4.0k 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.
  • mrjjM Offline
    mrjjM Offline
    mrjj
    Lifetime Qt Champion
    wrote on last edited by
    #2

    Hi
    Have you tried with setFocus?
    http://doc.qt.io/qt-5/qwidget.html#setFocus

    jaramos2409J 1 Reply Last reply
    0
    • mrjjM mrjj

      Hi
      Have you tried with setFocus?
      http://doc.qt.io/qt-5/qwidget.html#setFocus

      jaramos2409J Offline
      jaramos2409J Offline
      jaramos2409
      wrote on last edited by
      #3

      @mrjj I have tried to setFocus on the view before and after setCentralWidget(gameView) and nothing changed in either attempt.

      1 Reply Last reply
      0
      • mrjjM Offline
        mrjjM Offline
        mrjj
        Lifetime Qt Champion
        wrote on last edited by
        #4

        ok.
        impossible to guess what going on.

        Normally setFocus works so something steals your focus.

        try to list who has focus with
        http://doc.qt.io/qt-5/qapplication.html#focusWidget

        before u click.
        you can use QDebug()

        jaramos2409J 1 Reply Last reply
        0
        • mrjjM mrjj

          ok.
          impossible to guess what going on.

          Normally setFocus works so something steals your focus.

          try to list who has focus with
          http://doc.qt.io/qt-5/qapplication.html#focusWidget

          before u click.
          you can use QDebug()

          jaramos2409J Offline
          jaramos2409J Offline
          jaramos2409
          wrote on last edited by
          #5

          @mrjj It seems QObject 0x0 has focus which, from what I can tell, is the parent of the QMainWindow which is the only one I use in my project.

          mrjjM 1 Reply Last reply
          0
          • jaramos2409J jaramos2409

            @mrjj It seems QObject 0x0 has focus which, from what I can tell, is the parent of the QMainWindow which is the only one I use in my project.

            mrjjM Offline
            mrjjM Offline
            mrjj
            Lifetime Qt Champion
            wrote on last edited by mrjj
            #6

            @jaramos2409
            ok ? normally
            mainwindow dont have parent :)

            you can try to set focus a bit later then constructor

            void Mainwindow::showEvent( QShowEvent* event ) {
            QWidget::showEvent( event );
            thegamething->setFocus();
            }

            jaramos2409J 1 Reply Last reply
            0
            • mrjjM mrjj

              @jaramos2409
              ok ? normally
              mainwindow dont have parent :)

              you can try to set focus a bit later then constructor

              void Mainwindow::showEvent( QShowEvent* event ) {
              QWidget::showEvent( event );
              thegamething->setFocus();
              }

              jaramos2409J Offline
              jaramos2409J Offline
              jaramos2409
              wrote on last edited by
              #7

              @mrjj Haha sorry. It is late where I am and I found myself misunderstanding.

              Your suggestion did not seem to work. Is it possible I need to make QGraphicsView focusable somehow? It seems to only accept keyboard input after I click on the screen.

              1 Reply Last reply
              0
              • mrjjM Offline
                mrjjM Offline
                mrjj
                Lifetime Qt Champion
                wrote on last edited by
                #8

                @jaramos2409 said:

                QGraphicsView

                Normally the items in side the view get focus but I assume you overrode keypress etc for it
                and move item as "sprite".

                what happens when you "click screen" ?
                You mean u click in the view and then key works?

                jaramos2409J 1 Reply Last reply
                0
                • mrjjM mrjj

                  @jaramos2409 said:

                  QGraphicsView

                  Normally the items in side the view get focus but I assume you overrode keypress etc for it
                  and move item as "sprite".

                  what happens when you "click screen" ?
                  You mean u click in the view and then key works?

                  jaramos2409J Offline
                  jaramos2409J Offline
                  jaramos2409
                  wrote on last edited by jaramos2409
                  #9

                  @mrjj Yes yes.

                  Let me clarify what I have done. I have a QGraphicsScene with an object that has inherited QGraphicsPixMapItem inside of it. I have overridden this object's keyPressEvent(event) function in order to move the object move around the screen when Qt::Key_Left is pressed etc. This input isn't responsive after setCentralWidget(gameView) until I click somewhere on the screen. When I click on the screen, I am now able to move the object around pressing the arrow keys.

                  Edit: I feel I should also mention that, after the object I am moving around is constructed, I have indeed done the following:

                  player->setFlag(QGraphicsItem::ItemIsFocusable);
                  player->setFocus();
                  

                  In order to make sure it recieves the input. It was working initially when the gameView was initial screen/centralWidget set in the MainWindow's constructor, but ever since I made it so you switch to the gameView through QWidget based menu, I have had to click on the screen to active input responsiveness.

                  1 Reply Last reply
                  0
                  • mrjjM Offline
                    mrjjM Offline
                    mrjj
                    Lifetime Qt Champion
                    wrote on last edited by
                    #10

                    hmm and after this menu is closed,
                    you set focus (back) to player or gameview?

                    jaramos2409J 1 Reply Last reply
                    0
                    • mrjjM mrjj

                      hmm and after this menu is closed,
                      you set focus (back) to player or gameview?

                      jaramos2409J Offline
                      jaramos2409J Offline
                      jaramos2409
                      wrote on last edited by jaramos2409
                      #11

                      @mrjj Player is set as the focus before I attempt to set gameView as the centralWidget. There is also a check I run to see if player has the focus once the game is running in gameView. If player has lost focus, then focus is given back to player object.

                      I have been attempting to set focus on gameView in between the initial player setFocus and the focusChk() in order to make initial input in the gameView responsive to no avail.

                      1 Reply Last reply
                      0
                      • mrjjM Offline
                        mrjjM Offline
                        mrjj
                        Lifetime Qt Champion
                        wrote on last edited by
                        #12

                        Ok.
                        It might be a bug with QGraphics view.
                        with set focus.
                        you can browse
                        https://bugreports.qt.io/secure/Dashboard.jspa
                        to see if can spot anything related.

                        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