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 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