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. [Re-ReOpened) Easy input mask
Forum Updated to NodeBB v4.3 + New Features

[Re-ReOpened) Easy input mask

Scheduled Pinned Locked Moved Unsolved General and Desktop
21 Posts 5 Posters 8.0k 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.
  • yczoY Offline
    yczoY Offline
    yczo
    wrote on last edited by yczo
    #12

    hello un thank you, A question more...

    But with this code some fails. I can only the first validator a4 write, a3 don't work. The expresion dont work, only a4. Why might it be?

    /    const QString a4 = "[0-9A-Za-Z]{4}";
        const QString a3 = "[0-9A-Za-Z]{3}";
        const QString expression = QString("%1\\s\\:\\s%1\\s\\/%2\\s%2\\s\\-\\s%1").arg(a4).arg(a3);
        QRegExp rx(expression);
        QValidator *validator = new QRegExpValidator(rx, this);
        ui->lineEdit->setValidator(validator);
    /your code here
    

    Thanks in advance

    ? 1 Reply Last reply
    0
    • yczoY yczo

      hello un thank you, A question more...

      But with this code some fails. I can only the first validator a4 write, a3 don't work. The expresion dont work, only a4. Why might it be?

      /    const QString a4 = "[0-9A-Za-Z]{4}";
          const QString a3 = "[0-9A-Za-Z]{3}";
          const QString expression = QString("%1\\s\\:\\s%1\\s\\/%2\\s%2\\s\\-\\s%1").arg(a4).arg(a3);
          QRegExp rx(expression);
          QValidator *validator = new QRegExpValidator(rx, this);
          ui->lineEdit->setValidator(validator);
      /your code here
      

      Thanks in advance

      ? Offline
      ? Offline
      A Former User
      wrote on last edited by A Former User
      #13

      @yczo You also need to enter the spaces, the colon, the slash and the dash.

      1 Reply Last reply
      0
      • yczoY Offline
        yczoY Offline
        yczo
        wrote on last edited by yczo
        #14

        Upssss....thank you very much, as could not see the extra characters, like in ui->lineEdit->setInputMask("NNN:NNNN /NNN NNN - NNNN;X");

        is there a way to merge both? Because

            ui->setupUi(this);
           // ui->lineEdit->inputMask ;
        
          //  ui->getLine->setMaxLength(sizeMSG);
          //  ui->lineEdit->setInputMask("nnn;A");
           // ui->lineEdit->setInputMask("nnn;");
          //  ui->lineEdit->adjustSize();
        
        ui->lineEdit->setInputMask("NNN:NNN/NNN;X");
        const QString a0 = "[0-9A-Za-Z]{3}";
        const QString a1 = "[0-9A-Za-Z]{3}";
        const QString a2 = "[0-9A-Za-Z]{3}";
        const QString expression = QString("%1\\:\\%2\\/\\%3").arg(a0).arg(a1).arg(a2);
        //ui->lineEdit->setCursorPosition(0);
         //   const QString a4 = "[0-9A-Za-Z]{4}";
         //   const QString a3 = "[0-9A-Za-Z]{3}";
         //   const QString expression = QString("%1\\s\\:\\s%1\\s\\/%2\\s%2\\s\\-\\s%1").arg(a4).arg(a3);
        
            QRegExp rx(expression);
            QValidator *validator = new QRegExpValidator(rx, this);
            ui->lineEdit->setValidator(validator);
        
            ui->lineEdit->setFixedWidth(600);
            ui->lineEdit->setCursorPosition(0);
        

        don't works.

        Greetings

        ? 1 Reply Last reply
        0
        • yczoY yczo

          Upssss....thank you very much, as could not see the extra characters, like in ui->lineEdit->setInputMask("NNN:NNNN /NNN NNN - NNNN;X");

          is there a way to merge both? Because

              ui->setupUi(this);
             // ui->lineEdit->inputMask ;
          
            //  ui->getLine->setMaxLength(sizeMSG);
            //  ui->lineEdit->setInputMask("nnn;A");
             // ui->lineEdit->setInputMask("nnn;");
            //  ui->lineEdit->adjustSize();
          
          ui->lineEdit->setInputMask("NNN:NNN/NNN;X");
          const QString a0 = "[0-9A-Za-Z]{3}";
          const QString a1 = "[0-9A-Za-Z]{3}";
          const QString a2 = "[0-9A-Za-Z]{3}";
          const QString expression = QString("%1\\:\\%2\\/\\%3").arg(a0).arg(a1).arg(a2);
          //ui->lineEdit->setCursorPosition(0);
           //   const QString a4 = "[0-9A-Za-Z]{4}";
           //   const QString a3 = "[0-9A-Za-Z]{3}";
           //   const QString expression = QString("%1\\s\\:\\s%1\\s\\/%2\\s%2\\s\\-\\s%1").arg(a4).arg(a3);
          
              QRegExp rx(expression);
              QValidator *validator = new QRegExpValidator(rx, this);
              ui->lineEdit->setValidator(validator);
          
              ui->lineEdit->setFixedWidth(600);
              ui->lineEdit->setCursorPosition(0);
          

          don't works.

          Greetings

          ? Offline
          ? Offline
          A Former User
          wrote on last edited by
          #15

          @yczo said:

          is there a way to merge both?

          Yes, just make the parts of the input optional, like this:

              ui->setupUi(this);
              ui->lineEdit->setInputMask("NNN : NNN");
          
              const QString a0 = "[ 0-9A-Za-z]{3}"; // space before 0
              const QString space = "\\s";
              const QString colon = "\\:";
              const QString expression = QString("%1%2%3%2%1").arg(a0).arg(space).arg(colon);
              QRegExp rx(expression);
              QValidator *validator = new QRegExpValidator(rx, this);
              ui->lineEdit->setValidator(validator);
          
          1 Reply Last reply
          2
          • yczoY Offline
            yczoY Offline
            yczo
            wrote on last edited by yczo
            #16

            thank you that was great.

            1 Reply Last reply
            0
            • yczoY Offline
              yczoY Offline
              yczo
              wrote on last edited by
              #17

              The last question, ist posible set a max int value in the string (after other characters)?

              for example A37 (37 is the max),We could write from A00, A01.., to A37

              Greetings

              ? 1 Reply Last reply
              0
              • yczoY yczo

                The last question, ist posible set a max int value in the string (after other characters)?

                for example A37 (37 is the max),We could write from A00, A01.., to A37

                Greetings

                ? Offline
                ? Offline
                A Former User
                wrote on last edited by
                #18

                @yczo Yes, you can do this by adjusting the regular expression.

                1 Reply Last reply
                1
                • yczoY Offline
                  yczoY Offline
                  yczo
                  wrote on last edited by
                  #19

                  Please, can you show me how to make it? Because I tried several options but, I have not luck.

                  That is my idea

                      ui->leStr->setInputMask("A99");
                  
                                                          //el conjunto para tanto espacios
                      const QString id ="[ (A,M,O)]{1}";  //espacio delante para poder editar
                      const QString cm ="[ 0-9]{2}";
                  
                      //const QString sl ="[0-50]{2}";
                      const QString expr = QString("%1%2").arg(id).arg(cm);
                      QRegExp cmp(expr);
                      QValidator *vld = new QRegExpValidator(cmp,this);
                      ui->leStr->setValidator(vld);
                      ui->leStr->setCursorPosition(0);
                  
                  1 Reply Last reply
                  0
                  • yczoY Offline
                    yczoY Offline
                    yczo
                    wrote on last edited by yczo
                    #20

                    That is another idea, but don't work too

                    ui->le1->setInputMask("99");
                    ui->le1->setValidator(new QDoubleValidator(01,10,1,this));
                    ui->le1->setCursorPosition(0);
                    

                    or

                    ui->le1->setInputMask("99");
                    ui->le1->setValidator(new QIntValidator(1,10,this));
                    ui->le1->setCursorPosition(0);
                    

                    i don't understand what I make wrong,

                    Greetings

                    Edit---
                    ok i discovered that,

                    ui->le1->setValidator(new QIntValidator(1,10,this));

                    work good for integers, but, only in a separate field. how to make all together, that is another story und not idea XDD

                    1 Reply Last reply
                    0
                    • jsulmJ Offline
                      jsulmJ Offline
                      jsulm
                      Lifetime Qt Champion
                      wrote on last edited by
                      #21

                      For your example (max A37) it should be like this:

                      A[0-3][0-7]
                      

                      https://forum.qt.io/topic/113070/qt-code-of-conduct

                      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