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

QML DATAEDIT

Scheduled Pinned Locked Moved Solved QML and Qt Quick
3 Posts 1 Posters 297 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.
  • R Offline
    R Offline
    Rphoenix
    wrote on last edited by
    #1

    The element was completed, but it remained the only bug with the months: it works out the number normally, and if there is a month and costs 06, it turns out 16, then it is reset. How to fix?

    import QtQuick 2.0
    import QtQuick.Controls 1.4
    
    
    
    
    
    Item {
        id: dateEdit
    
        readonly property date currentDate: calendar.selectedDate
        readonly property bool isCalendarOpened: calendar.visible
        property string color: "lightblue"
    
        signal calendarOpened;
        signal calendarClosed;
    
        width: textField.width + btnOpen.width
        height: textField.height
    
        Column {
            id: column
            spacing: 2
    
            Row {
                spacing: 5
                TextField {
                    id: textField
                    text: Qt.formatDate(calendar.selectedDate, "dd.MM.yyyy");
                    //                readOnly: true
    
                    function validate_date(value)
                    {
                        var arrD = value.split(".");
                        arrD[1] -= 1;
                        var d = new Date(arrD[2], arrD[1], arrD[0]);
                        if ((d.getFullYear() == arrD[2]) && (d.getMonth() == arrD[1]) && (d.getDate() == arrD[0])) {
                            return true;
                        } else {
    
                            return false;
                        }
                    }
    
                    function getMonth(value)
                    {
                        var arrm = value.split(".");
                        arrm[1] -= 0;
                            return arrm[1];
    
                    }
    
                    function getDay(value)
                    {
                        var arrd = value.split(".");
                        arrd[0] -= 0;
                            return arrd[0];
    
                    }
    
                    Keys.onReleased:
                   {validate_date(text)?console.log("Current data: "+(text.substring(3,5))):{text=Qt.formatDate(calendar.selectedDate, "dd.MM.yyyy")}}
                    inputMask: "99.99.9999"
                    inputMethodHints: Qt.ImhDigitsOnly
                    Keys.onUpPressed:  calendar.__selectNextDay()
                    Keys.onDownPressed: calendar.__selectPreviousDay()
                }
                Rectangle {
                    id: btnOpen
                    radius: 5
                    width: 30
                    height: textField.height
                    color: dateEdit.color
    
                    Text {
                        text: "*"
                    }
    
                    MouseArea {
                        anchors.fill: parent
    
                        onClicked: {
                            dateEdit.isCalendarOpened ?  closeCalendar() : openCalendar()
                        }
                    }
                }
            }
    
            Calendar {
                id: calendar
                visible: false
                dayOfWeekFormat: Locale.ShortFormat
                onClicked: {
                    closeCalendar()
                }
    
                function open()
                {
                    visible = true
                }
    
                function close()
                {
                    visible = false
                }
            }
        }
    
        function openCalendar()
        {
            calendar.open()
            calendarOpened()
        }
    
        function closeCalendar()
        {
            calendar.close()
            calendarClosed()
        }
    }
    
    1 Reply Last reply
    0
    • R Offline
      R Offline
      Rphoenix
      wrote on last edited by
      #2

      Доделал

      import QtQuick 2.0
      import QtQuick.Controls 1.4
       
      Item {
          id: dateEdit
       
          readonly property date currentDate: calendar.selectedDate
          readonly property bool isCalendarOpened: calendar.visible
          property string color: "lightblue"
       
          signal calendarOpened;
          signal calendarClosed;
       
          width: textFielddata.width + btnOpen.width
          height: textFielddata.height
       
          Column {
              id: column
              spacing: 2
       
              Row {
                  spacing: 5
                  TextField {
                      id: textFielddata
                      text: Qt.formatDate(calendar.selectedDate, "dd.MM.yyyy");
                      //                readOnly: true
       
                      function validate_date(value)
                      {
                          var arrD = value.split(".");
                          arrD[1] -= 1;
                          var d = new Date(arrD[2], arrD[1], arrD[0]);
                          if ((d.getFullYear() == arrD[2]) && (d.getMonth() == arrD[1]) && (d.getDate() == arrD[0])) {
                              return true;
                          } else {
       
                              return false;
                          }
                      }
       
       
                      validator: RegExpValidator { regExp: /^([0-2]?[1-9]|3[0-9]).(0?[1-9]|1[0-9]).([0-9][0-9][0-9][0-9])$ / } // /^([0-2]?[1-9]|3[0-1]).(0?[1-9]|1[0-2]).([0-9][0-9][0-9][0-9])$ /
                      Keys.onReleased:
                      {if (validate_date(text)) {console.log("Current data: "+(text))} else if ([text[3]].toString() == "1") {text=text.substring(0,4)+0+text.substring(5);textFielddata.cursorPosition=5} else if ([text[0]].toString() == "3"&&([text[1]].toString()!="0")&&([text[1]].toString()!="1"))  {text=text.substring(0,1)+0+text.substring(2);textFielddata.cursorPosition=1} else {text="01"+text.substring(2);textFielddata.cursorPosition=0}}
                      inputMask:"99.99.9999";
                      inputMethodHints: Qt.ImhDigitsOnly
                      Keys.onUpPressed:  calendar.__selectNextDay()
                      Keys.onDownPressed: calendar.__selectPreviousDay()
                  }
                  Rectangle {
                      id: btnOpen
                      radius: 5
                      width: 30
                      height: textFielddata.height
                      color: dateEdit.color
       
                      Text {
                          text: "*"
                      }
       
                      MouseArea {
                          anchors.fill: parent
       
                          onClicked: {
                              dateEdit.isCalendarOpened ?  closeCalendar() : openCalendar()
                          }
                      }
                  }
              }
       
              Calendar {
                  id: calendar
                  visible: false
                  dayOfWeekFormat: Locale.ShortFormat
                  onClicked: {
                      closeCalendar()
                  }
       
                  function open()
                  {
                      function get_date(value)
                      {
                          var arrD = value.split(".");
                          arrD[1] -= 1;
                          var d = new Date(arrD[2], arrD[1], arrD[0]);
                          if ((d.getFullYear() == arrD[2]) && (d.getMonth() == arrD[1]) && (d.getDate() == arrD[0])) {
                              return d;
                          } else {
       
                              return false;
                          }}
       
                      calendar.selectedDate=new Date(get_date(textFielddata.text));
                      visible = true
       
                  }
       
                  function close()
                  {
                      visible = false
                  }
              }
          }
       
          function openCalendar()
          {
              calendar.open()
              calendarOpened()
          }
       
          function closeCalendar()
          {
              calendar.close()
              calendarClosed()
          }
      }
       
      Вызов
       
      import QtQuick 2.9
      import QtQuick.Window 2.2
      import QtQuick.Controls 2.5
      import QtQuick.Controls 2.5
       
      Window {
          visible: true
          width: 640
          height: 480
          title: qsTr("QML DATAEDIT тест")
       
          QmlDateEdit{
       
          }
       
      }
      
      1 Reply Last reply
      1
      • R Offline
        R Offline
        Rphoenix
        wrote on last edited by
        #3

        Доработка функции:
        function open()
        {
        function get_date(value)
        {
        var arrD = value.split(".");
        arrD[1] -= 1;
        var d = new Date(arrD[2], arrD[1], arrD[0]);
        if ((d.getFullYear() == arrD[2]) && (d.getMonth() == arrD[1]) && (d.getDate() == arrD[0])) {
        return d;
        } else {

                            return false;
                        }}
        
                    calendar.selectedDate=new Date(get_date(textFielddata.text));
                    visible = true
        
                }
        
        1 Reply Last reply
        1

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved