Technologia: Qt, c++, cmake

Interesuje mnie przykład z wykorzystaniem Model/View dla moich danych. I przełączanie miedzy dwoma widokami.
Widok w wersji Lista kolumny: checked(jako checkbox do zaznaczania) | time | description | name | surname | ikona (miniatura obrazu z path_image 32x32px)
Widok w wersji 'Minatury' miniatura w rozmiarze 96x96 pix , pod miniaturą time oraz checkbox do zaznaczania

1h wsparcia telefonicznego,

#include  <filesystem>
#include  <string>
		
typedef std::string TTime;
typedef std::filesystem::path TPath;
typedef std::string TString;
typedef bool TBool;

struct TImage 
{
    TTime time;           // np. "2023-02-13 13:17"
    TPath path_image;     // relative path  ./images/0001.png 
    TBool checked;        //   
    TString description;  // 
    TString name;         // 
    TString surname;      // 
};

typedef std::vector<TImage>  TImageList;

TImageList data = {
    {"2023-02-13 13:01", "./images/0001.png", false, "desc001", "name001","surname001"},
    {"2023-02-13 13:02", "./images/0002.png", false, "desc002", "name002","surname002"},
    {"2023-02-13 13:03", "./images/0003.png", false, "desc003", "name003","surname003"},
    {"2023-02-13 13:04", "./images/0004.png", false, "desc004", "name004","surname004"},
    {"2023-02-13 13:05", "./images/0005.png", false, "desc005", "name005","surname005"},
    {"2023-02-13 13:06", "./images/0006.png", false, "desc006", "name006","surname006"},
    {"2023-02-13 13:07", "./images/0007.png", false, "desc007", "name007","surname007"},
    {"2023-02-13 13:08", "./images/0008.png", false, "desc008", "name008","surname008"},
    {"2023-02-13 13:09", "./images/0009.png", false, "desc009", "name009","surname009"},
    {"2023-02-13 13:10", "./images/0010.png", false, "desc010", "name010","surname010"},
    };