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

Custom QWidget Keyboard first time click issue.

Scheduled Pinned Locked Moved Unsolved General and Desktop
27 Posts 5 Posters 5.5k 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 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