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. How to set the widget has the default focus properties

How to set the widget has the default focus properties

Scheduled Pinned Locked Moved Solved General and Desktop
14 Posts 5 Posters 11.5k Views
  • 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.
  • Qt_crazyerQ Offline
    Qt_crazyerQ Offline
    Qt_crazyer
    wrote on last edited by Qt_crazyer
    #4

    I have used this function. But it doesn't work.

    study::study(QWidget *parent)
        : QMainWindow(parent)
    {
        widget = new QWidget;
        l1 = new QLineEdit;
        l2 = new QLineEdit;
        m1 = new QLabel(tr("Label1"));
        m2 = new QLabel(tr("Lable2"));
        lay = new QHBoxLayout(widget);
        lay->addWidget(m1);
        lay->addWidget(l1);
        lay->addWidget(m2);
        lay->addWidget(l2);
        lay->setSpacing(10);
        lay->setMargin(10);
        l2->setFocus();
        this->setCentralWidget(widget);
    }
    

    Should this function be used here?

    Taz742T V 2 Replies Last reply
    0
    • Qt_crazyerQ Qt_crazyer

      I have used this function. But it doesn't work.

      study::study(QWidget *parent)
          : QMainWindow(parent)
      {
          widget = new QWidget;
          l1 = new QLineEdit;
          l2 = new QLineEdit;
          m1 = new QLabel(tr("Label1"));
          m2 = new QLabel(tr("Lable2"));
          lay = new QHBoxLayout(widget);
          lay->addWidget(m1);
          lay->addWidget(l1);
          lay->addWidget(m2);
          lay->addWidget(l2);
          lay->setSpacing(10);
          lay->setMargin(10);
          l2->setFocus();
          this->setCentralWidget(widget);
      }
      

      Should this function be used here?

      Taz742T Offline
      Taz742T Offline
      Taz742
      wrote on last edited by Taz742
      #5

      @Qt_crazyer
      Please try l2->setFocus(Qt::otherFocusReason);

      Do what you want.

      Qt_crazyerQ 1 Reply Last reply
      0
      • Taz742T Taz742

        @Qt_crazyer
        Please try l2->setFocus(Qt::otherFocusReason);

        Qt_crazyerQ Offline
        Qt_crazyerQ Offline
        Qt_crazyer
        wrote on last edited by Qt_crazyer
        #6

        @Taz742
        Yes, I have also tried this function, but it doesn't work. This is just a sample program, it is very simple. I do not understand why?...
        0_1512038660188_cd874806-0e47-4208-a215-6842c3404795-image.png

        Taz742T 1 Reply Last reply
        0
        • Qt_crazyerQ Qt_crazyer

          @Taz742
          Yes, I have also tried this function, but it doesn't work. This is just a sample program, it is very simple. I do not understand why?...
          0_1512038660188_cd874806-0e47-4208-a215-6842c3404795-image.png

          Taz742T Offline
          Taz742T Offline
          Taz742
          wrote on last edited by
          #7

          @Qt_crazyer
          An other solution is to use a singleShot timer :

          
          QTimer::singleShot(0,lineEdit,SLOT(setFocus()));
          

          The focus will then be set once the application is free.

          See solution follow the link..

          Do what you want.

          Qt_crazyerQ 1 Reply Last reply
          1
          • Qt_crazyerQ Qt_crazyer

            I have used this function. But it doesn't work.

            study::study(QWidget *parent)
                : QMainWindow(parent)
            {
                widget = new QWidget;
                l1 = new QLineEdit;
                l2 = new QLineEdit;
                m1 = new QLabel(tr("Label1"));
                m2 = new QLabel(tr("Lable2"));
                lay = new QHBoxLayout(widget);
                lay->addWidget(m1);
                lay->addWidget(l1);
                lay->addWidget(m2);
                lay->addWidget(l2);
                lay->setSpacing(10);
                lay->setMargin(10);
                l2->setFocus();
                this->setCentralWidget(widget);
            }
            

            Should this function be used here?

            V Offline
            V Offline
            vivaladav
            wrote on last edited by
            #8

            @Qt_crazyer I am assuming l2 is a member (using "m" as prefix for members would help).

            Just set the focus with a delay, in your case:

                QTimer::singleShot(0, this, [this]
                {
                    l2->setFocus();
                });
            

            Davide Coppola
            blog | Linkedin | Twitter

            Qt_crazyerQ 1 Reply Last reply
            1
            • Taz742T Taz742

              @Qt_crazyer
              An other solution is to use a singleShot timer :

              
              QTimer::singleShot(0,lineEdit,SLOT(setFocus()));
              

              The focus will then be set once the application is free.

              See solution follow the link..

              Qt_crazyerQ Offline
              Qt_crazyerQ Offline
              Qt_crazyer
              wrote on last edited by
              #9

              @Taz742
              Thank you so much. The problem has been solved. Thank you for your patient guidance.

              1 Reply Last reply
              0
              • V vivaladav

                @Qt_crazyer I am assuming l2 is a member (using "m" as prefix for members would help).

                Just set the focus with a delay, in your case:

                    QTimer::singleShot(0, this, [this]
                    {
                        l2->setFocus();
                    });
                
                Qt_crazyerQ Offline
                Qt_crazyerQ Offline
                Qt_crazyer
                wrote on last edited by
                #10

                @vivaladav
                Thank you for your reply. This method is really effective.

                Taz742T 1 Reply Last reply
                0
                • Qt_crazyerQ Qt_crazyer

                  @vivaladav
                  Thank you for your reply. This method is really effective.

                  Taz742T Offline
                  Taz742T Offline
                  Taz742
                  wrote on last edited by Taz742
                  #11

                  @Qt_crazyer
                  Nope. Do not forget mark this topic as SOLVED.

                  Do what you want.

                  1 Reply Last reply
                  0
                  • M Offline
                    M Offline
                    mpergand
                    wrote on last edited by
                    #12

                    What about this ?

                    setTabOrder(l2,l1);
                    
                    Qt_crazyerQ 1 Reply Last reply
                    0
                    • M mpergand

                      What about this ?

                      setTabOrder(l2,l1);
                      
                      Qt_crazyerQ Offline
                      Qt_crazyerQ Offline
                      Qt_crazyer
                      wrote on last edited by
                      #13

                      @mpergand
                      Thank you for your advice. I have tried this function. This is indeed an effective way.

                      1 Reply Last reply
                      0
                      • V Offline
                        V Offline
                        vivaladav
                        wrote on last edited by
                        #14

                        Keep in mind that setTabOrder might not be the right solution if you introduce more widgets (as in any normal working application).

                        Davide Coppola
                        blog | Linkedin | Twitter

                        1 Reply Last reply
                        2

                        • Login

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