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. QWizard : clear focus Next Button
Forum Updated to NodeBB v4.3 + New Features

QWizard : clear focus Next Button

Scheduled Pinned Locked Moved Solved General and Desktop
18 Posts 2 Posters 5.3k Views 1 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.
  • F fgdevel

    @mrjj

    not at all.
    I want to see the QWizard page but with the focus disabled on the Next button

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

    @fgdevel
    Ok it means user can still just click on it ?

    You can just set focus to something then using
    setFocus();
    Like one of your own buttons or a textedit.

    F 1 Reply Last reply
    0
    • mrjjM mrjj

      @fgdevel
      Ok it means user can still just click on it ?

      You can just set focus to something then using
      setFocus();
      Like one of your own buttons or a textedit.

      F Offline
      F Offline
      fgdevel
      wrote on last edited by
      #9

      @mrjj

      Yes, it's just the focus I want to remove.
      Because I use i QWizard page, it's not simple

      mrjjM 1 Reply Last reply
      0
      • F fgdevel

        @mrjj

        Yes, it's just the focus I want to remove.
        Because I use i QWizard page, it's not simple

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

        @fgdevel
        By remove focus you mean so that if user hit say enter, then nothing happens?
        Or what is thee goal of what you want?

        F 1 Reply Last reply
        0
        • mrjjM mrjj

          @fgdevel
          By remove focus you mean so that if user hit say enter, then nothing happens?
          Or what is thee goal of what you want?

          F Offline
          F Offline
          fgdevel
          wrote on last edited by
          #11

          @mrjj

          yes it's the goal. When the user press Enter key, nothing happens

          mrjjM 1 Reply Last reply
          0
          • F fgdevel

            @mrjj

            yes it's the goal. When the user press Enter key, nothing happens

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

            @fgdevel
            but that is 100% what validatePage does.
            If you return false, the Next dont work/nothing happens.
            Dont matter if you hit enter or click on it.

            So that is why im confused of what you really mean.

            F 1 Reply Last reply
            0
            • mrjjM mrjj

              @fgdevel
              but that is 100% what validatePage does.
              If you return false, the Next dont work/nothing happens.
              Dont matter if you hit enter or click on it.

              So that is why im confused of what you really mean.

              F Offline
              F Offline
              fgdevel
              wrote on last edited by
              #13

              @mrjj

              I want Next button works. But just focus not

              mrjjM 1 Reply Last reply
              0
              • F fgdevel

                @mrjj

                I want Next button works. But just focus not

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

                @fgdevel
                ok so you want user to click on it.

                Have a look at setFocusProxy();

                http://ldc.usb.ve/docs/qt/dialogs-complexwizard.html

                It seems that you can call that in a Pages constructor and then it will give focus to that widget when page is
                shown.

                F 1 Reply Last reply
                0
                • mrjjM mrjj

                  @fgdevel
                  ok so you want user to click on it.

                  Have a look at setFocusProxy();

                  http://ldc.usb.ve/docs/qt/dialogs-complexwizard.html

                  It seems that you can call that in a Pages constructor and then it will give focus to that widget when page is
                  shown.

                  F Offline
                  F Offline
                  fgdevel
                  wrote on last edited by
                  #15

                  @mrjj

                  I have used diffrent setFocus functions but none of them seems to work...

                  mrjjM 1 Reply Last reply
                  0
                  • F fgdevel

                    @mrjj

                    I have used diffrent setFocus functions but none of them seems to work...

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

                    @fgdevel
                    Hi
                    You are right. by magic it can still hit enter on Next...

                    I changed sample "trivialwizard" to use eventfilter.
                    That can eat the enter key. :)
                    so key changes are
                    class myEventFilter: public QObject // the event filer
                    app.installEventFilter(new myEventFilter()); // using the filter

                    #include <QtWidgets>
                    #include <QTranslator>
                    #include <QLocale>
                    #include <QLibraryInfo>
                    QWizard* wizardp;
                    QWizardPage* createIntroPage() {
                      QWizardPage* page = new QWizardPage;
                      page->setTitle("Introduction");
                    
                      QLabel* label = new QLabel("This wizard will help you register your copy "
                                                 "of Super Product Two.");
                      label->setWordWrap(true);
                      QLineEdit* nameLineEdit = new QLineEdit;
                    
                      QVBoxLayout* layout = new QVBoxLayout;
                      layout->addWidget(label);
                      layout->addWidget(nameLineEdit);
                      page->setLayout(layout);
                    
                    
                      wizardp->button(QWizard::CancelButton)-> setFocus();
                      return page;
                    }
                    
                    QWizardPage* createRegistrationPage()
                    {
                      //! [3]
                      QWizardPage* page = new QWizardPage;
                      page->setTitle("Registration");
                      page->setSubTitle("Please fill both fields.");
                    
                      QLabel* nameLabel = new QLabel("Name:");
                      QLineEdit* nameLineEdit = new QLineEdit;
                    
                      QLabel* emailLabel = new QLabel("Email address:");
                      QLineEdit* emailLineEdit = new QLineEdit;
                    
                      QGridLayout* layout = new QGridLayout;
                      layout->addWidget(nameLabel, 0, 0);
                      layout->addWidget(nameLineEdit, 0, 1);
                      layout->addWidget(emailLabel, 1, 0);
                      layout->addWidget(emailLineEdit, 1, 1);
                      page->setLayout(layout);
                    
                      return page;
                      //! [4]
                    }
                    //! [2] //! [4]
                    
                    //! [5] //! [6]
                    QWizardPage* createConclusionPage()
                    //! [5] //! [7]
                    {
                      //! [7]
                      QWizardPage* page = new QWizardPage;
                      page->setTitle("Conclusion");
                    
                      QLabel* label = new QLabel("You are now successfully registered. Have a "
                                                 "nice day!");
                      label->setWordWrap(true);
                    
                      QVBoxLayout* layout = new QVBoxLayout;
                      layout->addWidget(label);
                      page->setLayout(layout);
                    
                      return page;
                      //! [8]
                    }
                    //! [6] //! [8]
                    // this you need
                    class myEventFilter: public QObject {
                     public:
                      myEventFilter(): QObject() {}
                      ~myEventFilter() {}
                      bool eventFilter(QObject* object, QEvent* event) {
                        if (event->type() == QEvent::KeyPress) {
                          QKeyEvent* key = static_cast<QKeyEvent*>(event);
                          if ( (key->key() == Qt::Key_Enter) || (key->key() == Qt::Key_Return) ) {
                            event->ignore();
                          } else {
                            return QObject::eventFilter(object, event);
                          }
                        }
                      }
                    };
                    
                    //! [9] //! [10]
                    int main(int argc, char* argv[])
                    //! [9] //! [11]
                    {
                      QApplication app(argc, argv);
                    
                    #ifndef QT_NO_TRANSLATION
                      QString translatorFileName = QLatin1String("qt_");
                      translatorFileName += QLocale::system().name();
                      QTranslator* translator = new QTranslator(&app);
                      if (translator->load(translatorFileName, QLibraryInfo::location(QLibraryInfo::TranslationsPath)))
                        app.installTranslator(translator);
                    #endif
                    
                      QWizard wizard;
                      wizardp = &wizard;
                      wizard.addPage(createIntroPage());
                      wizard.addPage(createRegistrationPage());
                      wizard.addPage(createConclusionPage());
                    
                      wizard.setWindowTitle("Trivial Wizard");
                      wizard.show();
                      app.installEventFilter(new myEventFilter()); // install filter
                      return app.exec();
                    }
                    //! [10] //! [11]
                    
                    F 1 Reply Last reply
                    0
                    • mrjjM mrjj

                      @fgdevel
                      Hi
                      You are right. by magic it can still hit enter on Next...

                      I changed sample "trivialwizard" to use eventfilter.
                      That can eat the enter key. :)
                      so key changes are
                      class myEventFilter: public QObject // the event filer
                      app.installEventFilter(new myEventFilter()); // using the filter

                      #include <QtWidgets>
                      #include <QTranslator>
                      #include <QLocale>
                      #include <QLibraryInfo>
                      QWizard* wizardp;
                      QWizardPage* createIntroPage() {
                        QWizardPage* page = new QWizardPage;
                        page->setTitle("Introduction");
                      
                        QLabel* label = new QLabel("This wizard will help you register your copy "
                                                   "of Super Product Two.");
                        label->setWordWrap(true);
                        QLineEdit* nameLineEdit = new QLineEdit;
                      
                        QVBoxLayout* layout = new QVBoxLayout;
                        layout->addWidget(label);
                        layout->addWidget(nameLineEdit);
                        page->setLayout(layout);
                      
                      
                        wizardp->button(QWizard::CancelButton)-> setFocus();
                        return page;
                      }
                      
                      QWizardPage* createRegistrationPage()
                      {
                        //! [3]
                        QWizardPage* page = new QWizardPage;
                        page->setTitle("Registration");
                        page->setSubTitle("Please fill both fields.");
                      
                        QLabel* nameLabel = new QLabel("Name:");
                        QLineEdit* nameLineEdit = new QLineEdit;
                      
                        QLabel* emailLabel = new QLabel("Email address:");
                        QLineEdit* emailLineEdit = new QLineEdit;
                      
                        QGridLayout* layout = new QGridLayout;
                        layout->addWidget(nameLabel, 0, 0);
                        layout->addWidget(nameLineEdit, 0, 1);
                        layout->addWidget(emailLabel, 1, 0);
                        layout->addWidget(emailLineEdit, 1, 1);
                        page->setLayout(layout);
                      
                        return page;
                        //! [4]
                      }
                      //! [2] //! [4]
                      
                      //! [5] //! [6]
                      QWizardPage* createConclusionPage()
                      //! [5] //! [7]
                      {
                        //! [7]
                        QWizardPage* page = new QWizardPage;
                        page->setTitle("Conclusion");
                      
                        QLabel* label = new QLabel("You are now successfully registered. Have a "
                                                   "nice day!");
                        label->setWordWrap(true);
                      
                        QVBoxLayout* layout = new QVBoxLayout;
                        layout->addWidget(label);
                        page->setLayout(layout);
                      
                        return page;
                        //! [8]
                      }
                      //! [6] //! [8]
                      // this you need
                      class myEventFilter: public QObject {
                       public:
                        myEventFilter(): QObject() {}
                        ~myEventFilter() {}
                        bool eventFilter(QObject* object, QEvent* event) {
                          if (event->type() == QEvent::KeyPress) {
                            QKeyEvent* key = static_cast<QKeyEvent*>(event);
                            if ( (key->key() == Qt::Key_Enter) || (key->key() == Qt::Key_Return) ) {
                              event->ignore();
                            } else {
                              return QObject::eventFilter(object, event);
                            }
                          }
                        }
                      };
                      
                      //! [9] //! [10]
                      int main(int argc, char* argv[])
                      //! [9] //! [11]
                      {
                        QApplication app(argc, argv);
                      
                      #ifndef QT_NO_TRANSLATION
                        QString translatorFileName = QLatin1String("qt_");
                        translatorFileName += QLocale::system().name();
                        QTranslator* translator = new QTranslator(&app);
                        if (translator->load(translatorFileName, QLibraryInfo::location(QLibraryInfo::TranslationsPath)))
                          app.installTranslator(translator);
                      #endif
                      
                        QWizard wizard;
                        wizardp = &wizard;
                        wizard.addPage(createIntroPage());
                        wizard.addPage(createRegistrationPage());
                        wizard.addPage(createConclusionPage());
                      
                        wizard.setWindowTitle("Trivial Wizard");
                        wizard.show();
                        app.installEventFilter(new myEventFilter()); // install filter
                        return app.exec();
                      }
                      //! [10] //! [11]
                      
                      F Offline
                      F Offline
                      fgdevel
                      wrote on last edited by
                      #17

                      @mrjj

                      I've found a solution with :

                      this->setOptions(QWizard::NoDefaultButton);
                      this->setOption(QWizard::NoDefaultButton, true);

                      mrjjM 1 Reply Last reply
                      1
                      • F fgdevel

                        @mrjj

                        I've found a solution with :

                        this->setOptions(QWizard::NoDefaultButton);
                        this->setOption(QWizard::NoDefaultButton, true);

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

                        @fgdevel
                        super.
                        Thank you for reporting back.

                        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