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