Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. Forcing uppercase only into QLineEdit
Forum Updated to NodeBB v4.3 + New Features

Forcing uppercase only into QLineEdit

Scheduled Pinned Locked Moved QML and Qt Quick
18 Posts 5 Posters 14.6k 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.
  • C Offline
    C Offline
    crystal_ice
    wrote on last edited by
    #5

    No error message! But it still won't output capital letters.

    @
    void MainWindow::on_textbox1_textEdited(const QString &arg1)
    {
    QRegExp reg("[A-Z]{1,50}");
    QRegExpValidator val(reg,0);
    ui->textbox1->setValidator(&val);
    }
    @

    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #6

      You are setting the validator too late, do it in the constructor. Also, it will be destroyed at the end of on_textbox1_textEdited since it's allocated on the stack.

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      0
      • C Offline
        C Offline
        crystal_ice
        wrote on last edited by
        #7

        Like this? It's still not working.

        @
        #include "mainwindow.h"
        #include "ui_mainwindow.h"

        MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
        {
        // setStyleSheet("background-image:url(':/step1/step2/step4.jpg');");
        ui->setupUi(this);

        QRegExp reg("[A-Z]{1,50}");
        QRegExpValidator val(reg,0);
        ui->textbox1->setValidator(&val);
        ui->textbox2->setValidator(&val);
        ui->textbox3->setValidator(&val);
            
        ui->textbox1->setMaxLength(50);
        ui->textbox3->setMaxLength(40);
        ui->textbox4->setMaxLength(3);
        ui->textbox4->setValidator(new QIntValidator(0,999, this));
        

        }
        @

        1 Reply Last reply
        0
        • SGaistS Offline
          SGaistS Offline
          SGaist
          Lifetime Qt Champion
          wrote on last edited by
          #8

          QRegExpValidor will still be destroyed at the end of the constructor.

          Please have a look at it's usage in the documentation

          Interested in AI ? www.idiap.ch
          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

          1 Reply Last reply
          0
          • M Offline
            M Offline
            Mortaneous
            wrote on last edited by
            #9

            This is what I've been doing.
            Using your example
            @ void MainWindow::on_textbox1_textChanged(const QString &arg1)
            {
            // QFont.setCapitalization(QFont::AllUppercase);
            ui->textbox1.setText(arg1.toUpper());
            }
            @

            I was hoping there was a better way to do it. But it seems to me like there isn't.

            1 Reply Last reply
            0
            • M Offline
              M Offline
              Mortaneous
              wrote on last edited by
              #10

              This is what I've been doing.
              Using your example
              @ void MainWindow::on_textbox1_textChanged(const QString &arg1)
              {
              // QFont.setCapitalization(QFont::AllUppercase);
              ui->textbox1.setText(arg1.toUpper());
              }
              @

              I was hoping there was a better way to do it. But it seems to me like there isn't.

              1 Reply Last reply
              0
              • SGaistS Offline
                SGaistS Offline
                SGaist
                Lifetime Qt Champion
                wrote on last edited by
                #11

                Hi and welcome to devnet,

                Why not use QRegExpValidator ?

                Interested in AI ? www.idiap.ch
                Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                1 Reply Last reply
                0
                • SGaistS Offline
                  SGaistS Offline
                  SGaist
                  Lifetime Qt Champion
                  wrote on last edited by
                  #12

                  Hi and welcome to devnet,

                  Why not use QRegExpValidator ?

                  Interested in AI ? www.idiap.ch
                  Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                  1 Reply Last reply
                  0
                  • M Offline
                    M Offline
                    Mortaneous
                    wrote on last edited by
                    #13

                    Thank you for the warm welcome.

                    I do use QRegExpValidator quite frequently, but I feel like this restriction reduces usability. From my experience, a validator will force exact input only, and reject anything else. Unless I'm not using it correctly.

                    What I usually need is a qtextbox or qlineedit that accepts all input, then transforms the input to be valid and acceptable (eg. uppercase) and reflects the changes immediately while the user is typing. Hence the @SLOT (textChanged(QString))@.

                    Is there a better way of doing this?

                    1 Reply Last reply
                    0
                    • M Offline
                      M Offline
                      Mortaneous
                      wrote on last edited by
                      #14

                      Thank you for the warm welcome.

                      I do use QRegExpValidator quite frequently, but I feel like this restriction reduces usability. From my experience, a validator will force exact input only, and reject anything else. Unless I'm not using it correctly.

                      What I usually need is a qtextbox or qlineedit that accepts all input, then transforms the input to be valid and acceptable (eg. uppercase) and reflects the changes immediately while the user is typing. Hence the @SLOT (textChanged(QString))@.

                      Is there a better way of doing this?

                      1 Reply Last reply
                      0
                      • C Offline
                        C Offline
                        crystal_ice
                        wrote on last edited by
                        #15

                        Try using this:

                        @ui->textbox1->setText(QString::number(whatever you need to output,16).toUpper());@

                        1 Reply Last reply
                        0
                        • C Offline
                          C Offline
                          crystal_ice
                          wrote on last edited by
                          #16

                          Try using this:

                          @ui->textbox1->setText(QString::number(whatever you need to output,16).toUpper());@

                          1 Reply Last reply
                          0
                          • A Offline
                            A Offline
                            andre
                            wrote on last edited by
                            #17

                            You can also start capturing and modifying your key events.

                            1 Reply Last reply
                            0
                            • A Offline
                              A Offline
                              andre
                              wrote on last edited by
                              #18

                              You can also start capturing and modifying your key events.

                              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