Михаиллл
Aug. 14, 2019, 7:11 p.m.

Как в QML обновить календарь?

Добрый день.
Так сделал календарь.
После нажатия на число в календаре, меняется в коде расцветка, в которую должны быть окрашенны делегаты календаря. Но видимая расцветка не меняется, календарь не обновляется. Такое обновление не срабатывает:

                    mothGrid1.update()
                    model.update()

Скажите пожалуйста, как обновить календарь?

    MonthGrid {
        id: mothGrid1
        month: 7//Calendar.December
        year: 2019
        x: 23
        y: 154
        width: 340
        height: 355
        //locale: Qt.locale("en_US")

        delegate: Item {
            Rectangle{
                id: rectangleDelegat
                anchors.fill: parent
                //color: AppCore.getVectorDate().includes(model.day + "." + (model.month +1 ) + "." + model.year ) || AppCore.getVectorDate().includes(model.day + "." + 0+(model.month +1 ) + "." + model.year ) ?  "gainsboro" : "white"
                //color: model.date >= Date.fromLocaleString(Qt.locale(), AppCore.getDateOypr1(), "dd.MM.yyyy") && model.date <= Date.fromLocaleString(Qt.locale(), AppCore.getDateOypr2(), "dd.MM.yyyy") ? model.date ===  Date.fromLocaleString(Qt.locale(), AppCore.getDateOypr1(), "dd.MM.yyyy") /*||  model.date == Date.fromLocaleString(Qt.locale(), AppCore.getDateOypr2(), "dd.MM.yyyy")*/ ? "blue" : "gainsboro" : "white"
                border.color: "black"
                border.width: 1
                color: AppCore.getColorRectangleCalendar(Qt.formatDate(model.date,"dd.MM.yyyy"))
            }
            Text {
                id: textDelegat
                //color: AppCore.getVectorDate().includes(model.day + "." + (model.month +1 ) + "." + model.year ) || AppCore.getVectorDate().includes(model.day + "." + 0+(model.month +1 ) + "." + model.year ) ?  "black" : "gainsboro"
                color: AppCore.getColorTextCalendar(Qt.formatDate(model.date,"dd.MM.yyyy"))
                anchors.horizontalCenter: parent.horizontalCenter
                anchors.verticalCenter: parent.verticalCenter
                text: model.day
                font.weight: Font.ExtraLight
            }

            MouseArea{
                anchors.fill: parent
                onClicked: {
                    rectangleDelegat.color = "blue"
                    textDelegat.color = "white"
                    //console.log(model.day + "." + (model.month +1 ) + "." + model.year )
                    //console.log(numberEnterDate)
                    numberEnterDate++
                    if(numberEnterDate === 1 && model.model.month < 10) {AppCore.setDateOypr1(model.day + "." + 0 + (model.month +1 ) + "." + model.year )}
                    if(numberEnterDate === 1 && model.model.month >= 10) {AppCore.setDateOypr1(model.day + "." + (model.month +1 ) + "." + model.year )}
                    if(numberEnterDate >= 2 && model.model.month < 10) {
                        if(date >= Date.fromLocaleString(Qt.locale(), AppCore.getDateOypr1(), "dd.MM.yyyy")){
                        AppCore.setDateOypr2(model.day + "." + 0 + (model.month +1 ) + "." + model.year )
                        }
                        else{
                            AppCore.date2RavnoDate1()
                            AppCore.setDateOypr1(model.day + "." + 0 + (model.month +1 ) + "." + model.year )
                        }
                        loader.source = "FirstWindow.qml"
                    }
                    if(numberEnterDate >= 2 && model.model.month >= 10) {
                        if(date >= Date.fromLocaleString(Qt.locale(), AppCore.getDateOypr1(), "dd.MM.yyyy")){
                            AppCore.setDateOypr2(model.day + "." + (model.month +1 ) + "." + model.year )
                        }
                        else{
                            AppCore.date2RavnoDate1()
                            AppCore.setDateOypr1(model.day + "." + (model.month +1 ) + "." + model.year )
                        }
                        loader.source = "FirstWindow.qml"
                    }
                    mothGrid1.update()
                    model.update()
                }
            }
        }
    }
3

Do you like it? Share on social networks!

3
Михаиллл
  • Aug. 15, 2019, 1:03 a.m.
  • The answer was marked as a solution.

Смог сделать только преходом на месяц туда и обратно

                        if (mothGrid1.month > 0) {mothGrid1.month--;}
                        if (mothGrid1.month == 0) {mothGrid1.month = 11; mothGrid1.year--;}
                        if (mothGrid1.month < 11) {mothGrid1.month++;}
                        if (mothGrid1.month == 11) {mothGrid1.month = 0; mothGrid1.year++;}
    Pavel K.
    • Aug. 15, 2019, 1:04 p.m.
    • (edited)

    вот тут

    MouseArea{
         anchors.fill: parent
         onClicked: {
                после изменения цвета 
                вызываем переотрисовку моделт}
    }
    

    у вас модель не явно задана, я пока не пойму как перерисовать ее

    если бы я из плюсов делал(через qmlRegisterType) , было бы что то вроде

    Page {
        id: page
        allowedOrientations: Orientation.All
         model:yourClassModel.createCalendar()
    // some code
         MouseArea{   
             onClicked: {
             меняем цвета ()
            yourClassModel.createCalendar()
        } 
    }
    
      Михаиллл
      • Aug. 15, 2019, 1:19 p.m.

      Плюсы и qml отличаются, с++ логичней

        Comments

        Only authorized users can post comments.
        Please, Log in or Sign up
        • Last comments
        • AK
          April 24, 2025, 12:04 p.m.
          UPD: Переписал логику воспроизведения через стороннюю библиотеку BASS. Там выбрать можно
        • Evgenii Legotckoi
          April 16, 2025, 5:08 p.m.
          Благодарю за отзыв. И вам желаю всяческих успехов!
        • IscanderChe
          April 12, 2025, 5:12 p.m.
          Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
        • AK
          April 1, 2025, 11:41 a.m.
          Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
        • Evgenii Legotckoi
          March 9, 2025, 9:02 p.m.
          К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…