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. Time Edit field in QML
Forum Update on Monday, May 27th 2025

Time Edit field in QML

Scheduled Pinned Locked Moved Solved QML and Qt Quick
qtquick2textfieldqtquickcontrol
13 Posts 5 Posters 6.9k Views
  • 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.
  • P Offline
    P Offline
    pra7
    wrote on last edited by
    #1

    I need to implement a TimeEdit(HH:MM:SS) field in QML similar to QTimeEdit in QT C++. In QML I didn't find TimeEdit and I have implemented the control similar to TimeEdit using TextField and if I add inputMask then the Regular expression is not at all validated, Is there any way that I can achieve this? Following is the code.

    import QtQuick 2.7
        import QtQuick.Window 2.2
        import QtQuick.Controls 2.2
        
        Window {
            visible: true
            width: 640
            height: 480
            title: qsTr("Time Edit")
        
            TextField{
                id:textEditTD
                text : ""
                inputMethodHints: Qt.ImhDigitsOnly
        
                inputMask: "dd:dd:dd; "
                validator: RegExpValidator { regExp: /^([0-1]?[0-9]|2[0-3]):([0-5][0-9]):[0-5][0-9]$ / }
        
                width:100
                height:50
                background:Rectangle{
                    color:"transparent"
                    border.color: "red"
                    border.width:2
                    radius:(width * 0.05)
                }
            }
        }
    
    
    M 1 Reply Last reply
    0
    • P pra7

      I need to implement a TimeEdit(HH:MM:SS) field in QML similar to QTimeEdit in QT C++. In QML I didn't find TimeEdit and I have implemented the control similar to TimeEdit using TextField and if I add inputMask then the Regular expression is not at all validated, Is there any way that I can achieve this? Following is the code.

      import QtQuick 2.7
          import QtQuick.Window 2.2
          import QtQuick.Controls 2.2
          
          Window {
              visible: true
              width: 640
              height: 480
              title: qsTr("Time Edit")
          
              TextField{
                  id:textEditTD
                  text : ""
                  inputMethodHints: Qt.ImhDigitsOnly
          
                  inputMask: "dd:dd:dd; "
                  validator: RegExpValidator { regExp: /^([0-1]?[0-9]|2[0-3]):([0-5][0-9]):[0-5][0-9]$ / }
          
                  width:100
                  height:50
                  background:Rectangle{
                      color:"transparent"
                      border.color: "red"
                      border.width:2
                      radius:(width * 0.05)
                  }
              }
          }
      
      
      M Offline
      M Offline
      mostefa
      wrote on last edited by mostefa
      #2

      @pra7

      Hi @pra7

      Your code is correct but you have to add an input mask also

      inputMask: "99:99:99"//input mask
      text: "00:00:00" //default text
      

      Your code will code to something like this:

      import QtQuick 2.7
          import QtQuick.Window 2.2
          import QtQuick.Controls 2.2
      
          Window {
              visible: true
              width: 640
              height: 480
              title: qsTr("Time Edit")
      
              TextField{
                  id:textEditTD
                  text : "00:00:00"
                  inputMask: "99:99:99"
                  inputMethodHints: Qt.ImhDigitsOnly
                  validator: RegExpValidator { regExp: /^([0-1]?[0-9]|2[0-3]):([0-5][0-9]):[0-5][0-9]$ / }
      
                  width:100
                  height:50
                  background:Rectangle{
                      color:"transparent"
                      border.color: "red"
                      border.width:2
                      radius:(width * 0.05)
                  }
              }
          }
      

      This should work ...

      P 1 Reply Last reply
      1
      • M mostefa

        @pra7

        Hi @pra7

        Your code is correct but you have to add an input mask also

        inputMask: "99:99:99"//input mask
        text: "00:00:00" //default text
        

        Your code will code to something like this:

        import QtQuick 2.7
            import QtQuick.Window 2.2
            import QtQuick.Controls 2.2
        
            Window {
                visible: true
                width: 640
                height: 480
                title: qsTr("Time Edit")
        
                TextField{
                    id:textEditTD
                    text : "00:00:00"
                    inputMask: "99:99:99"
                    inputMethodHints: Qt.ImhDigitsOnly
                    validator: RegExpValidator { regExp: /^([0-1]?[0-9]|2[0-3]):([0-5][0-9]):[0-5][0-9]$ / }
        
                    width:100
                    height:50
                    background:Rectangle{
                        color:"transparent"
                        border.color: "red"
                        border.width:2
                        radius:(width * 0.05)
                    }
                }
            }
        

        This should work ...

        P Offline
        P Offline
        Praveen_2017
        wrote on last edited by Praveen_2017
        #3

        @mostefa Thanks it almost works but backspace is not working.
        For Example : If i enter 12:12:12 and try to clear the value using backspace then it's not working. My expectation is that it should become 00:00:00. Is there any way to achieve this ?

        M 1 Reply Last reply
        0
        • P Praveen_2017

          @mostefa Thanks it almost works but backspace is not working.
          For Example : If i enter 12:12:12 and try to clear the value using backspace then it's not working. My expectation is that it should become 00:00:00. Is there any way to achieve this ?

          M Offline
          M Offline
          mostefa
          wrote on last edited by
          #4

          @Praveen_2017 said in Time Edit field in QML:

          @mostefa Thanks it almost works but backspace is not working.
          For Example : If i enter 12:12:12 and try to clear the value using backspace then it's not working. My expectation is that it should become 00:00:00. Is there any way to achieve this ?

          Hi @Praveen_2017

          What if you match backspace for each digits in your expressions?

          You have to change your regExp on your validator to something like this:

          validator: RegExpValidator { regExp: /^([0-1\s]?[0-9\s]|2[0-3\s]):([0-5\s][0-9\s]):([0-5\s][0-9\s])$ / }
          
          P P 2 Replies Last reply
          1
          • M mostefa

            @Praveen_2017 said in Time Edit field in QML:

            @mostefa Thanks it almost works but backspace is not working.
            For Example : If i enter 12:12:12 and try to clear the value using backspace then it's not working. My expectation is that it should become 00:00:00. Is there any way to achieve this ?

            Hi @Praveen_2017

            What if you match backspace for each digits in your expressions?

            You have to change your regExp on your validator to something like this:

            validator: RegExpValidator { regExp: /^([0-1\s]?[0-9\s]|2[0-3\s]):([0-5\s][0-9\s]):([0-5\s][0-9\s])$ / }
            
            P Offline
            P Offline
            Praveen_2017
            wrote on last edited by
            #5
            This post is deleted!
            1 Reply Last reply
            0
            • M mostefa

              @Praveen_2017 said in Time Edit field in QML:

              @mostefa Thanks it almost works but backspace is not working.
              For Example : If i enter 12:12:12 and try to clear the value using backspace then it's not working. My expectation is that it should become 00:00:00. Is there any way to achieve this ?

              Hi @Praveen_2017

              What if you match backspace for each digits in your expressions?

              You have to change your regExp on your validator to something like this:

              validator: RegExpValidator { regExp: /^([0-1\s]?[0-9\s]|2[0-3\s]):([0-5\s][0-9\s]):([0-5\s][0-9\s])$ / }
              
              P Offline
              P Offline
              pra7
              wrote on last edited by
              #6

              @mostefa Thanks !!!it's working :-)

              ODБOïO 1 Reply Last reply
              0
              • P pra7

                @mostefa Thanks !!!it's working :-)

                ODБOïO Offline
                ODБOïO Offline
                ODБOï
                wrote on last edited by
                #7

                @pra7 Go SOLVED

                P 1 Reply Last reply
                0
                • ODБOïO ODБOï

                  @pra7 Go SOLVED

                  P Offline
                  P Offline
                  pra7
                  wrote on last edited by
                  #8

                  @LeLev I didn't get ... Can you please explain ?

                  1 Reply Last reply
                  0
                  • ODБOïO Offline
                    ODБOïO Offline
                    ODБOï
                    wrote on last edited by
                    #9

                    Im not regExp pro but this is working
                    TextField{
                    id:textEditTD
                    text : "00:00:00"
                    inputMask: "99:99:99"
                    inputMethodHints: Qt.ImhDigitsOnly
                    validator: RegExpValidator { regExp: /^([0-1\s]?[0-9\s]|2[0-3\s]):([0-5\s][0-9\s]):([0-5\s][0-9\s])$ / }

                              width:100
                              height:50
                          }
                    

                    LA

                    E 1 Reply Last reply
                    1
                    • ODБOïO ODБOï

                      Im not regExp pro but this is working
                      TextField{
                      id:textEditTD
                      text : "00:00:00"
                      inputMask: "99:99:99"
                      inputMethodHints: Qt.ImhDigitsOnly
                      validator: RegExpValidator { regExp: /^([0-1\s]?[0-9\s]|2[0-3\s]):([0-5\s][0-9\s]):([0-5\s][0-9\s])$ / }

                                width:100
                                height:50
                            }
                      

                      LA

                      E Offline
                      E Offline
                      Eeli K
                      wrote on last edited by
                      #10

                      @LeLev Maybe @pra7 meant "Go SOLVED"... which means marking a topic as solved so that others can see the original problem was solved in the thread. It's under "Topic Tools" menu for the one who has started the thread.

                      ODБOïO 1 Reply Last reply
                      0
                      • E Eeli K

                        @LeLev Maybe @pra7 meant "Go SOLVED"... which means marking a topic as solved so that others can see the original problem was solved in the thread. It's under "Topic Tools" menu for the one who has started the thread.

                        ODБOïO Offline
                        ODБOïO Offline
                        ODБOï
                        wrote on last edited by
                        #11

                        @Eeli-K this is @pra7 s topic not mine ^^

                        E 1 Reply Last reply
                        0
                        • ODБOïO ODБOï

                          @Eeli-K this is @pra7 s topic not mine ^^

                          E Offline
                          E Offline
                          Eeli K
                          wrote on last edited by
                          #12

                          @LeLev That's why I directed the rest of my comment to pra7 :)

                          ODБOïO 1 Reply Last reply
                          0
                          • E Eeli K

                            @LeLev That's why I directed the rest of my comment to pra7 :)

                            ODБOïO Offline
                            ODБOïO Offline
                            ODБOï
                            wrote on last edited by
                            #13

                            @Eeli-K sorry I have read your comment incorrectly :p

                            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