Qt i C++ QModelIndex i QAbstractItemModel

0

Czy ktoś z was będzie wiedział jaka jest różnica między QModelIndex, a QAbstractItemModel ?

Wiem tylko tyle, że QModelIndex służy do znajdowania danych w modelu, a QAbstractItemModel pozycji w modelu ? Nawet nie wiem czy dobrą mam wiedzę.

Czy objaśnilibyście jak używać QModelIndex ? Wiem tylko tyle, że jak jakaś klasa zawiera metodę index to można jej z palca w pisać do jakiego indexu chcę się odnieść, ale jak użyć tego gdy jakaś klasa nie zawiera metody index ?

0

QModelIndex to klasa opisująca miejsce w modelu (np w liście, tabeli). QAbstractItemModel to interfejs opisujący model, np listę, tabelę.

0

pytam, bo znalazłem przykład Query Model Example zrobiłem go na swojej bazie SQLITE ale niestety mi nic do niej nie zapisuje i próbuję dojść dlaczego.

I w tym momencie zacząłem się zastanawiać czy zamiast nadpisywać wirtualną funkcję setData to czy dałoby radę osiągnąć edycję w QTableView za pomocą Qt::ItemIsEditable poprzez stworzenie własnego modelu za pomocą klasy QAbstractItemModel ?

0

Jeśli funkcja Q*Model::flags() zwróci dla elementu spod danego QModelIndex flagę Qt::ItemIsEditable to musisz zaimplementować tą funkcjonalność w Q*Model::setData. Jak inaczej model miałby wiedzieć co i jak zmienić?

0

Mam jeszcze pytanie, oprócz dwóch poniższych funkcji

    Qt::ItemFlags flags(const QModelIndex &index) const override;
    bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;

trzeba jeszcze jakieś dodatkowe funkcje nadpisać ? Czy to jest już wystarczające ? Pytanie zadaję dość ogólnie bo na razie poruszam się po omacku i nie wiem jak je doprecyzować.

1 użytkowników online, w tym zalogowanych: 0, gości: 1