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

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

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

  1. mothGrid1.update()
  2. model.update()

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

  1. MonthGrid {
  2. id: mothGrid1
  3. month: 7//Calendar.December
  4. year: 2019
  5. x: 23
  6. y: 154
  7. width: 340
  8. height: 355
  9. //locale: Qt.locale("en_US")
  10.  
  11. delegate: Item {
  12. Rectangle{
  13. id: rectangleDelegat
  14. anchors.fill: parent
  15. //color: AppCore.getVectorDate().includes(model.day + "." + (model.month +1 ) + "." + model.year ) || AppCore.getVectorDate().includes(model.day + "." + 0+(model.month +1 ) + "." + model.year ) ? "gainsboro" : "white"
  16. //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"
  17. border.color: "black"
  18. border.width: 1
  19. color: AppCore.getColorRectangleCalendar(Qt.formatDate(model.date,"dd.MM.yyyy"))
  20. }
  21. Text {
  22. id: textDelegat
  23. //color: AppCore.getVectorDate().includes(model.day + "." + (model.month +1 ) + "." + model.year ) || AppCore.getVectorDate().includes(model.day + "." + 0+(model.month +1 ) + "." + model.year ) ? "black" : "gainsboro"
  24. color: AppCore.getColorTextCalendar(Qt.formatDate(model.date,"dd.MM.yyyy"))
  25. anchors.horizontalCenter: parent.horizontalCenter
  26. anchors.verticalCenter: parent.verticalCenter
  27. text: model.day
  28. font.weight: Font.ExtraLight
  29. }
  30.  
  31. MouseArea{
  32. anchors.fill: parent
  33. onClicked: {
  34. rectangleDelegat.color = "blue"
  35. textDelegat.color = "white"
  36. //console.log(model.day + "." + (model.month +1 ) + "." + model.year )
  37. //console.log(numberEnterDate)
  38. numberEnterDate++
  39. if(numberEnterDate === 1 && model.model.month < 10) {AppCore.setDateOypr1(model.day + "." + 0 + (model.month +1 ) + "." + model.year )}
  40. if(numberEnterDate === 1 && model.model.month >= 10) {AppCore.setDateOypr1(model.day + "." + (model.month +1 ) + "." + model.year )}
  41. if(numberEnterDate >= 2 && model.model.month < 10) {
  42. if(date >= Date.fromLocaleString(Qt.locale(), AppCore.getDateOypr1(), "dd.MM.yyyy")){
  43. AppCore.setDateOypr2(model.day + "." + 0 + (model.month +1 ) + "." + model.year )
  44. }
  45. else{
  46. AppCore.date2RavnoDate1()
  47. AppCore.setDateOypr1(model.day + "." + 0 + (model.month +1 ) + "." + model.year )
  48. }
  49. loader.source = "FirstWindow.qml"
  50. }
  51. if(numberEnterDate >= 2 && model.model.month >= 10) {
  52. if(date >= Date.fromLocaleString(Qt.locale(), AppCore.getDateOypr1(), "dd.MM.yyyy")){
  53. AppCore.setDateOypr2(model.day + "." + (model.month +1 ) + "." + model.year )
  54. }
  55. else{
  56. AppCore.date2RavnoDate1()
  57. AppCore.setDateOypr1(model.day + "." + (model.month +1 ) + "." + model.year )
  58. }
  59. loader.source = "FirstWindow.qml"
  60. }
  61. mothGrid1.update()
  62. model.update()
  63. }
  64. }
  65. }
  66. }
3

Do you like it? Share on social networks!

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

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

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

    вот тут

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

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

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

    1. Page {
    2. id: page
    3. allowedOrientations: Orientation.All
    4. model:yourClassModel.createCalendar()
    5. // some code
    6. MouseArea{
    7. onClicked: {
    8. меняем цвета ()
    9. yourClassModel.createCalendar()
    10. }
    11. }
      Михаиллл
      • 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 1, 2025, 11:41 a.m.
          Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
        • Evgenii Legotckoi
          March 9, 2025, 9:02 p.m.
          К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
        • VP
          March 9, 2025, 4:14 p.m.
          Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
        • ИМ
          Nov. 22, 2024, 9:51 p.m.
          Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
        • Evgenii Legotckoi
          Oct. 31, 2024, 11:37 p.m.
          Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup