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. Custom QWidget Keyboard first time click issue.

Custom QWidget Keyboard first time click issue.

Scheduled Pinned Locked Moved Unsolved General and Desktop
27 Posts 5 Posters 6.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.
  • A Offline
    A Offline
    Arvind K
    wrote on last edited by
    #12

    still, the issue is pending. Please provide a solution.

    1 Reply Last reply
    -1
    • D Offline
      D Offline
      deleted372
      wrote on last edited by
      #13

      It may be a silly question, does it happen with all the buttons of your keyboard?
      Are you sure that the first time you push on a button of your keyboard the slot keyboardHandler() gets called?

      A 1 Reply Last reply
      0
      • D deleted372

        It may be a silly question, does it happen with all the buttons of your keyboard?
        Are you sure that the first time you push on a button of your keyboard the slot keyboardHandler() gets called?

        A Offline
        A Offline
        Arvind K
        wrote on last edited by
        #14

        @JoZCaVaLLo

        Yes, it happens with all the buttons of a keyboard. slot keyboardHandler() does not get called for the first time. another thing I observed that when I called a keyboard on QPushbutton clicked event then keyboard works properly. this issue happens with QlineEdit Only.

        1 Reply Last reply
        0
        • D Offline
          D Offline
          deleted372
          wrote on last edited by
          #15

          I would call lineEditkeyboard->setLineEdit(line) only when the lineEdit gets the focus.
          In addition, in the setLineEdit(), I would call this->setFocusProxy(line). In order to avoid your keyboard to steal the focus from your linedit.

          A 1 Reply Last reply
          0
          • D deleted372

            I would call lineEditkeyboard->setLineEdit(line) only when the lineEdit gets the focus.
            In addition, in the setLineEdit(), I would call this->setFocusProxy(line). In order to avoid your keyboard to steal the focus from your linedit.

            A Offline
            A Offline
            Arvind K
            wrote on last edited by
            #16

            @JoZCaVaLLo
            @mrjj
            @J-Hilk
            @dheerendra
            one more thing to share when I called keyboard widget with a show() like
            lineEditkeyboard->setLineEdit(line);
            lineEditkeyboard->show();

            the keyboard works properly but when I called Keyboard like

            lineEditkeyboard->setLineEdit(line);
            lineEditkeyboard->setWindowModality(Qt::ApplicationModal);
            lineEditkeyboard->show();

            then I face the same issue of the first click.

            mrjjM 1 Reply Last reply
            0
            • A Arvind K

              @JoZCaVaLLo
              @mrjj
              @J-Hilk
              @dheerendra
              one more thing to share when I called keyboard widget with a show() like
              lineEditkeyboard->setLineEdit(line);
              lineEditkeyboard->show();

              the keyboard works properly but when I called Keyboard like

              lineEditkeyboard->setLineEdit(line);
              lineEditkeyboard->setWindowModality(Qt::ApplicationModal);
              lineEditkeyboard->show();

              then I face the same issue of the first click.

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

              @Arvind-K
              hi, we need to find out what is happening.
              please do
              qDebug() << "focus widget " << qApp->focusObject();
              which tells us when you open the keyboard, who has focus.
              Meaning who will get the keys if u type.
              I think you have something that steals keyboard focus when u open the
              lineEditkeyboard

              A 1 Reply Last reply
              0
              • mrjjM mrjj

                @Arvind-K
                hi, we need to find out what is happening.
                please do
                qDebug() << "focus widget " << qApp->focusObject();
                which tells us when you open the keyboard, who has focus.
                Meaning who will get the keys if u type.
                I think you have something that steals keyboard focus when u open the
                lineEditkeyboard

                A Offline
                A Offline
                Arvind K
                wrote on last edited by
                #18

                @mrjj

                as you said I have done same when keyboard widget is shown.
                output is

                DBG default: focus widget QLineEdit(0x227ca90, name = "lineEdit")

                lineEdit is Nothing but the QLineEdit on Keyboard widget.

                mrjjM 1 Reply Last reply
                0
                • A Arvind K

                  @mrjj

                  as you said I have done same when keyboard widget is shown.
                  output is

                  DBG default: focus widget QLineEdit(0x227ca90, name = "lineEdit")

                  lineEdit is Nothing but the QLineEdit on Keyboard widget.

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

                  @Arvind-K
                  Ok so it does have the focus when first click is not registered?

                  A 1 Reply Last reply
                  0
                  • mrjjM mrjj

                    @Arvind-K
                    Ok so it does have the focus when first click is not registered?

                    A Offline
                    A Offline
                    Arvind K
                    wrote on last edited by
                    #20

                    @mrjj

                    Yes.
                    after that when I click on Anywhere on Widget Nothing happen or no Any event gets called.

                    mrjjM 1 Reply Last reply
                    0
                    • A Arvind K

                      @mrjj

                      Yes.
                      after that when I click on Anywhere on Widget Nothing happen or no Any event gets called.

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

                      @Arvind-K
                      so the widget appear frozen for a moment ?
                      Do you have any kind of loops in constructor or anything like that ?

                      A 1 Reply Last reply
                      0
                      • mrjjM mrjj

                        @Arvind-K
                        so the widget appear frozen for a moment ?
                        Do you have any kind of loops in constructor or anything like that ?

                        A Offline
                        A Offline
                        Arvind K
                        wrote on last edited by
                        #22

                        @mrjj

                        No, there is no Loop in the constructor or No Any other code only I have connected signal to Slot.

                        Keyboard::Keyboard(QWidget *parent) :
                        QWidget(parent),
                        ui(new Ui::Keyboard)
                        {
                        ui->setupUi(this);

                        this->setWindowFlags(Qt::WindowStaysOnTopHint);
                        connect ( ui->Buttonq, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Buttonw, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Buttone, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Buttonr, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Buttont, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Buttony, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Buttonu, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Buttoni, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Buttono, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Buttonp, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        
                        connect ( ui->Buttona, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Buttons, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Buttond, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Buttonf, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Buttong, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Buttonh, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Buttonj, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Buttonk, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Buttonl, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Buttonz, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Buttonx, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Buttonc, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Buttonv, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Buttonb, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Buttonn, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Buttonm, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Button0, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Button1, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Button2, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Button3, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Button4, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Button5, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Button6, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Button7, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Button8, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->Button9, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        connect ( ui->space, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                        
                        outputText = "";
                        shift = false;
                        

                        }

                        mrjjM 1 Reply Last reply
                        0
                        • A Arvind K

                          @mrjj

                          No, there is no Loop in the constructor or No Any other code only I have connected signal to Slot.

                          Keyboard::Keyboard(QWidget *parent) :
                          QWidget(parent),
                          ui(new Ui::Keyboard)
                          {
                          ui->setupUi(this);

                          this->setWindowFlags(Qt::WindowStaysOnTopHint);
                          connect ( ui->Buttonq, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Buttonw, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Buttone, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Buttonr, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Buttont, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Buttony, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Buttonu, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Buttoni, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Buttono, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Buttonp, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          
                          connect ( ui->Buttona, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Buttons, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Buttond, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Buttonf, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Buttong, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Buttonh, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Buttonj, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Buttonk, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Buttonl, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Buttonz, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Buttonx, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Buttonc, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Buttonv, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Buttonb, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Buttonn, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Buttonm, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Button0, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Button1, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Button2, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Button3, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Button4, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Button5, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Button6, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Button7, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Button8, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->Button9, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          connect ( ui->space, SIGNAL( clicked() ), this, SLOT( keyboardHandler() ) );
                          
                          outputText = "";
                          shift = false;
                          

                          }

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

                          @Arvind-K
                          ok. when this situation is happening.
                          Does the buttons show activated effect ?
                          I mean can u see u pres them or anything ?

                          A 1 Reply Last reply
                          0
                          • A Offline
                            A Offline
                            Arvind K
                            wrote on last edited by
                            #24

                            @mrjj

                            As I mentioned Previously when I set WindowModality of Keyboard widget to QApplicationModal I face this First Click issue otherwise it works fine. but if I didn't set windowModality then Keyboard goes back to the parent widget.

                            **lineEditkeyboard->setWindowModality(Qt::ApplicationModal); **

                            mrjjM 1 Reply Last reply
                            0
                            • A Arvind K

                              @mrjj

                              As I mentioned Previously when I set WindowModality of Keyboard widget to QApplicationModal I face this First Click issue otherwise it works fine. but if I didn't set windowModality then Keyboard goes back to the parent widget.

                              **lineEditkeyboard->setWindowModality(Qt::ApplicationModal); **

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

                              Hmm.
                              The code looks ok fine and i cant see any reason for
                              QApplicationModal to cause this effect but
                              it could be a bug in Qt.

                              1 Reply Last reply
                              0
                              • mrjjM mrjj

                                @Arvind-K
                                ok. when this situation is happening.
                                Does the buttons show activated effect ?
                                I mean can u see u pres them or anything ?

                                A Offline
                                A Offline
                                Arvind K
                                wrote on last edited by
                                #26

                                @mrjj

                                I can't see press button effect for the first time.

                                mrjjM 1 Reply Last reply
                                0
                                • A Arvind K

                                  @mrjj

                                  I can't see press button effect for the first time.

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

                                  @Arvind-K
                                  Ok, then it seems its stuck for a moment in the event loop.
                                  Im not sure what to do about that.
                                  setWindowModality(Qt::ApplicationModal) must use a local even loop to make
                                  it modal so might be a but with this or something i dont see in the code.

                                  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