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. add QLabel into QLineEdit
Forum Updated to NodeBB v4.3 + New Features

add QLabel into QLineEdit

Scheduled Pinned Locked Moved Solved General and Desktop
32 Posts 5 Posters 16.7k Views 3 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.
  • raven-worxR raven-worx

    @marlenet15
    if you are familiar with regular expressions you might want to use QRegExpValidator which will result in the same behavior
    And set it on the line edit.

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

    @raven-worx
    oh. So QRegExpValidator can have static text?

    raven-worxR 1 Reply Last reply
    0
    • mrjjM mrjj

      @raven-worx
      oh. So QRegExpValidator can have static text?

      raven-worxR Offline
      raven-worxR Offline
      raven-worx
      Moderators
      wrote on last edited by
      #21

      @mrjj
      Of course, a regular expression can have a static text included

      --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
      If you have a question please use the forum so others can benefit from the solution in the future

      mrjjM M 2 Replies Last reply
      0
      • raven-worxR raven-worx

        @mrjj
        Of course, a regular expression can have a static text included

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

        @raven-worx
        yes, but i didn't know it would show in lineEdit as Validator sounds so none visual :)

        1 Reply Last reply
        0
        • raven-worxR raven-worx

          @mrjj
          Of course, a regular expression can have a static text included

          M Offline
          M Offline
          marlenet15
          wrote on last edited by
          #23

          @raven-worx Can you please show me an example of that? I have never heard of that and I googled it and I didn't find anything about that :)

          raven-worxR 1 Reply Last reply
          0
          • M marlenet15

            @raven-worx Can you please show me an example of that? I have never heard of that and I googled it and I didn't find anything about that :)

            raven-worxR Offline
            raven-worxR Offline
            raven-worx
            Moderators
            wrote on last edited by
            #24

            @marlenet15
            you can see how to use QRegExpValidator in the link i've posted.
            Use a RegExp similiar to this one. There are tons of material on the web about regexp to learn.

            QRegExp("Comments\\: ([Jan|Feb|Mar|Apr|Jun|Jul|Aug|Sep|Nov|Dec] [0-3]?[0-9] [0-9]{4}\\: (.+))");
            

            This regexp is surely not perfect, but enough to get an idea and continue to learn the syntax i guess.

            --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
            If you have a question please use the forum so others can benefit from the solution in the future

            kshegunovK M 2 Replies Last reply
            0
            • raven-worxR raven-worx

              @marlenet15
              you can see how to use QRegExpValidator in the link i've posted.
              Use a RegExp similiar to this one. There are tons of material on the web about regexp to learn.

              QRegExp("Comments\\: ([Jan|Feb|Mar|Apr|Jun|Jul|Aug|Sep|Nov|Dec] [0-3]?[0-9] [0-9]{4}\\: (.+))");
              

              This regexp is surely not perfect, but enough to get an idea and continue to learn the syntax i guess.

              kshegunovK Offline
              kshegunovK Offline
              kshegunov
              Moderators
              wrote on last edited by
              #25

              @raven-worx
              If I may interject, [Jan|Feb|Mar|Apr|Jun|Jul|Aug|Sep|Nov|Dec] is not okay for matching one should use a (non-capturing) group instead. i.e: (?:Jan|Feb|Mar|Apr|Jun|Jul|Aug|Sep|Nov|Dec).

              Read and abide by the Qt Code of Conduct

              1 Reply Last reply
              0
              • ValentinMicheletV Offline
                ValentinMicheletV Offline
                ValentinMichelet
                wrote on last edited by
                #26

                My two cents: if you have Qt5, consider using QRegularExpressionValidator and QRegularExpression instead, since the motor has been remarkably improved.

                1 Reply Last reply
                0
                • raven-worxR raven-worx

                  @marlenet15
                  you can see how to use QRegExpValidator in the link i've posted.
                  Use a RegExp similiar to this one. There are tons of material on the web about regexp to learn.

                  QRegExp("Comments\\: ([Jan|Feb|Mar|Apr|Jun|Jul|Aug|Sep|Nov|Dec] [0-3]?[0-9] [0-9]{4}\\: (.+))");
                  

                  This regexp is surely not perfect, but enough to get an idea and continue to learn the syntax i guess.

                  M Offline
                  M Offline
                  marlenet15
                  wrote on last edited by marlenet15
                  #27

                  @raven-worx I just tried it and the amazing thing is the cursor moves automatically moves to the right of the date. However, I can still edit the date and I don't want it to be edited whatsoever. When the mouse clicks the QLineEdit, I want it so that the cursor starts right after the date text. :( Is it possible for this? Thank you so much for you help!

                  This is the code I used:

                  QRegExp rx("Comments\\: ([Jan|Feb|Mar|Apr|Jun|Jul|Aug|Sep|Nov|Dec] [0-3]?[0-9] [0-9]{4}\\: (.+))");
                  QValidator *validator = new QRegExpValidator(rx, this);
                  ui->lineEdit->setValidator(validator);
                  
                  QDate date = QDate::currentDate();
                  QTime time = QTime::currentTime();
                  ui->lineEdit->setText(date.toString("MMM dd yyyy")+" "+time.toString("hh:mm:ss"));
                  
                  raven-worxR 1 Reply Last reply
                  0
                  • M marlenet15

                    @raven-worx I just tried it and the amazing thing is the cursor moves automatically moves to the right of the date. However, I can still edit the date and I don't want it to be edited whatsoever. When the mouse clicks the QLineEdit, I want it so that the cursor starts right after the date text. :( Is it possible for this? Thank you so much for you help!

                    This is the code I used:

                    QRegExp rx("Comments\\: ([Jan|Feb|Mar|Apr|Jun|Jul|Aug|Sep|Nov|Dec] [0-3]?[0-9] [0-9]{4}\\: (.+))");
                    QValidator *validator = new QRegExpValidator(rx, this);
                    ui->lineEdit->setValidator(validator);
                    
                    QDate date = QDate::currentDate();
                    QTime time = QTime::currentTime();
                    ui->lineEdit->setText(date.toString("MMM dd yyyy")+" "+time.toString("hh:mm:ss"));
                    
                    raven-worxR Offline
                    raven-worxR Offline
                    raven-worx
                    Moderators
                    wrote on last edited by raven-worx
                    #28

                    @marlenet15

                    Try this:

                    QString dateTimeStr = QDateTime::currentDateTime().toString("MMM dd yyyy hh:mm:ss");
                    QString rxStr("Comments\\: %1\\: (.+)");
                    QRegExp rx( rxStr.arg(dateTimeStr), Qt::CaseSensitive, QRegExp::RegExp2 );
                    QValidator *validator = new QRegExpValidator(rx, this);
                    ui->lineEdit->setValidator(validator);
                    

                    --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
                    If you have a question please use the forum so others can benefit from the solution in the future

                    M 1 Reply Last reply
                    1
                    • raven-worxR raven-worx

                      @marlenet15

                      Try this:

                      QString dateTimeStr = QDateTime::currentDateTime().toString("MMM dd yyyy hh:mm:ss");
                      QString rxStr("Comments\\: %1\\: (.+)");
                      QRegExp rx( rxStr.arg(dateTimeStr), Qt::CaseSensitive, QRegExp::RegExp2 );
                      QValidator *validator = new QRegExpValidator(rx, this);
                      ui->lineEdit->setValidator(validator);
                      
                      M Offline
                      M Offline
                      marlenet15
                      wrote on last edited by
                      #29

                      @raven-worx I can still edit the date_time stamp :(

                      kshegunovK 1 Reply Last reply
                      0
                      • M marlenet15

                        @raven-worx I can still edit the date_time stamp :(

                        kshegunovK Offline
                        kshegunovK Offline
                        kshegunov
                        Moderators
                        wrote on last edited by kshegunov
                        #30

                        @marlenet15
                        Hello,
                        I believe you are going to need an input mask after all. I think you should try something like this:

                        QString date = QDateTime::currentDateTime().toString("MMM dd yyyy hh:mm:ss");
                        QString heading = QStringLiteral("Comments %1: %2").arg(date); //< Construct the heading
                        QRegularExpression escaperx(QStringLiteral("([AaNnXx09Dd#HhBb><!\\\\]{1})")); //< Escape regex for input mask special characters
                        heading.replace(escaperx, QStringLiteral("\\\\1")); //< Escape the input mask
                        
                        QString mask = heading.arg("", 255, QLatin1Char('x')); //< Add 255 optional characters to the mask for the user to fill.
                        _dateLabel->setInputMask(mask);
                        

                        Then if you wish you could add a validator to ensure the user has entered correct data.

                        Kind regards.

                        EDIT:
                        I had forgotten to add the actual characters that the user can fill to the mask, but I edited the example and it should be correct now.

                        Read and abide by the Qt Code of Conduct

                        M 1 Reply Last reply
                        2
                        • kshegunovK kshegunov

                          @marlenet15
                          Hello,
                          I believe you are going to need an input mask after all. I think you should try something like this:

                          QString date = QDateTime::currentDateTime().toString("MMM dd yyyy hh:mm:ss");
                          QString heading = QStringLiteral("Comments %1: %2").arg(date); //< Construct the heading
                          QRegularExpression escaperx(QStringLiteral("([AaNnXx09Dd#HhBb><!\\\\]{1})")); //< Escape regex for input mask special characters
                          heading.replace(escaperx, QStringLiteral("\\\\1")); //< Escape the input mask
                          
                          QString mask = heading.arg("", 255, QLatin1Char('x')); //< Add 255 optional characters to the mask for the user to fill.
                          _dateLabel->setInputMask(mask);
                          

                          Then if you wish you could add a validator to ensure the user has entered correct data.

                          Kind regards.

                          EDIT:
                          I had forgotten to add the actual characters that the user can fill to the mask, but I edited the example and it should be correct now.

                          M Offline
                          M Offline
                          marlenet15
                          wrote on last edited by
                          #31

                          @kshegunov it works thank you very much and to everyone!

                          kshegunovK 1 Reply Last reply
                          0
                          • M marlenet15

                            @kshegunov it works thank you very much and to everyone!

                            kshegunovK Offline
                            kshegunovK Offline
                            kshegunov
                            Moderators
                            wrote on last edited by
                            #32

                            @marlenet15
                            No problem, I'm glad I could be of assistance.

                            Read and abide by the Qt Code of Conduct

                            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