Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Polish
  4. Qt Repeater ListModel i odświeżanie
Forum Updated to NodeBB v4.3 + New Features

Qt Repeater ListModel i odświeżanie

Scheduled Pinned Locked Moved Polish
3 Posts 2 Posters 1.5k Views 1 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.
  • T Offline
    T Offline
    Totton
    wrote on last edited by
    #1

    Witam, piszę ponieważ doprowadził mnie już QML do nieco złego nastroju (delikatnie powiedziane). Próbuję zrobić Repeatera, który jako model przyjmuje obiekt ListModel. I wszystko do tej pory gra i buczy. Otrzymuję od C++ sygnały o aktualnym stanie pewnych zmiennych (niestety ze względu na poufność projektu nie mogę zagłębić się w szczegóły) - reaguję na nie przy użyciu funkcji JavaScript i z jej poziomu chciałbym zaktualizować dane w jednym z pól w ListModel - przy użyciu setProperty. I tutaj pojawia się problem, co z tego, że ja sobie zmienię jakieś dane w ListModel przy użyciu standardowych funkcji setProperty lub set - mogę sobie zrobić nawet roszadę, a tak czy siak QML zareaguje na to tak:

    <zero reakcji>

    Proszę, powiedzcie mi czy da się i jak (jakimi sygnałami / funkcjami) odświeżyć widok Repeater'a bez schodzenia do C++ (tak się składa, że zejście do C++ będzie oznaczało utworzenie w bezsensowny sposób nowego pliku nagłówkowego i źródłowego dla listy zawsze zawierającej 3 elementy). Jeśli się nie da to będę kombinował dalej.

    Z góry dzięki i przepraszam za ton mojej wypowiedzi, ale QML już po raz n-ty wyprowadza mnie z równowagi.

    1 Reply Last reply
    0
    • sierdzioS Offline
      sierdzioS Offline
      sierdzio
      Moderators
      wrote on last edited by
      #2

      Sprawa jest prosta: Repeater tworzy obiekty raz, po czym o nich "zapomina". Myśl o nim raczej jak o makrze, które jest odalane na samym początku (taki "preprocessing"), a potem już nie występuje w gotowym kodzie.

      Jeśli chcesz list, które można odświeżać (pamiętając o warunkach "wymienionych":http://qt-project.org/doc/qt-5/qtquick-modelviewsdata-modelview.html#c-data-models w dokumentacji), musisz skorzystać z ListView, GridView itd. No albo wrzucić Repeater do Loadera i przeładowywać od nowa po każdej aktualizacji - ale to chyba trochę przesada.

      (Z(:^

      1 Reply Last reply
      0
      • T Offline
        T Offline
        Totton
        wrote on last edited by
        #3

        Dzięki za pomoc, o czymś takim jak Loader nie słyszałem jeszcze, ale to bardzo miło, że mi o tym piszesz, bo może rozwiązać mój problem.

        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