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 17.0k 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

    @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