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.8k 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

    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