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 Updated to NodeBB v4.3 + New Features

Time Edit field in QML

Scheduled Pinned Locked Moved Solved QML and Qt Quick
qtquick2textfieldqtquickcontrol
13 Posts 5 Posters 7.3k 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.
  • 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