14 августа 2019 г. 8:11

Как в 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()
                }
            }
        }
    }
Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.
3
  • 14 августа 2019 г. 14:03
  • Ответ был помечен как решение.

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

                        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++;}
  • 15 августа 2019 г. 2:04
  • (ред.)

вот тут

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

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

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

Page {
    id: page
    allowedOrientations: Orientation.All
     model:yourClassModel.createCalendar()
// some code
     MouseArea{   
         onClicked: {
         меняем цвета ()
        yourClassModel.createCalendar()
    } 
}

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

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
D
16 августа 2019 г. 11:58
Damir

C++ - Тест 003. Условия и циклы

  • Результат:92баллов,
  • Очки рейтинга8
D
16 августа 2019 г. 11:46
Damir

C++ - Тест 005. Структуры и Классы

  • Результат:75баллов,
  • Очки рейтинга2
u
14 августа 2019 г. 13:55
unrealproro

C++ - Тест 005. Структуры и Классы

  • Результат:83баллов,
  • Очки рейтинга4
Последние комментарии
19 августа 2019 г. 6:41
Андрей Янкович

это проблема дистрибутива, попробуйте установить через пакетный менеджер snap Суть проблемы: libQt5Core которая лежит в дистрибутиве требует версию glibc >= 2.25 у вас видимо …
b
18 августа 2019 г. 5:09
bbb116

cqtdeployer /home/aleks/CQtDeployer/bin/cqtdeployer: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.25' not found (required by /home/aleks/CQtDeployer/lib/libQt5Core.so.5) linux mint …
D
17 августа 2019 г. 8:04
Damir

github ChekableTView Правой групповая смена значения при перетаскивании левой как обычно.
Сейчас обсуждают на форуме
20 августа 2019 г. 12:37
Александр Панюшкин

Добрый день. Я бы хотел добавить, что в вашем коде можно было бы использовать слово auto и цикл for с перебором. Так код получился бы компактнее: auto map = new QMap<Qstring, QString&…
20 августа 2019 г. 12:17
Евгений Легоцкой

Добрый день. Вы делаете некорректную попытку создать исключение. Исключения генерируются кодом, то есть любое исключение, которое вы перехватываете, всегда генерируется оператором th…
20 августа 2019 г. 8:04
IscanderChe

Ещё раз здравствуйте. Собираю Qt-проект с помощью CMake. Применяю к полученному exe-файлу windeployqt. В результате подцепляются почему-то dll-ки, оканчивающиеся в наименованиях на "d": Qt…
20 августа 2019 г. 7:46
IscanderChe

Да, с таргетом тоже работает. Спасибо!
Ищу работу?
14,000.00 руб. - 40,000.00 руб.
Разработчик Qt
Annino, Moscow Oblast, Russia
5,000.00 руб. - 15,000.00 руб.
Дизайнер
Moskovskiy, Moscow, Russia
25,000.00 руб. - 30,000.00 руб.
Разработчик Qt/C++
Barnaul, Altai Krai, Russia

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы

EVILEG
О нас
Услуги
© EVILEG 2015-2019
Рекомендует хостинг TIMEWEB