Subclasarea QStandardItemModel pentru a evita QAbstractItemModel

Am implementat un Model/Vizualizare pentru un arbore cum ar fi structura, și am decis să încerc QStandardItemModel pe care am doriți să înfășurați pe ea o anumită clasă (pe care o numesc aici "appSpecificClass").

În principiu, vreau ca o parte a acelei clase (cum ar fi nume sau unele date) să fie afișate în model, iar când schimba modelul (în rolul de editare sau drag and drop), vreau să aibă consecințe asupra clasei appSpecificClass (care este, atunci când schimba un nume care se arată pe model, numele de pe obiectul asociat cu elementul modelului din clasa appSpecific, de asemenea, se schimbă).

Deci, am pornit de la subclasarea QStandardItem printr-un appSpecificItem, care are doar un pointer la AppSpecificClass. Când construiesc appSpecificItem, textul și pictogramele sunt chemați de la appSpecificClass și totul funcționează bine.

Cu toate acestea, atunci când schimbăm datele de la appSpecificItem, firește că nu schimbă clasa appSpecific, pentru că până acum nu am găsit nicio modalitate de a interacționa cu pointerul appSpecificItem prin suprasolicitarea unei funcții virtuale (sau altceva)

Știe cineva cum să facă acest lucru/dacă acest lucru este posibil? Ce pot face astfel încât, de exemplu, dacă semnalul

QStandardItemModel::itemChanged ( QStandardItem * item )

este emis, pot modifica un pointer al appSpecificItem.

Dacă nu, există un tutorial bun despre implementarea modelului de la zero? Am incercat eu, dar nu este o sarcina usoara. În mod ideal, aș dori un model asemănător modelului QStandardItemModel, dar o abstracție mai mică pe el (astfel încât să pot pune AppSpecificClass pe el).

0
Sunt de acord cu @KamilKlimek, deși crearea propriului model implică o bună cantitate de codificare, este destul de drept înainte. Probabil va fi mai ușor și mai puțin predispus la erori decât ceea ce încercați să faceți acum. Există un tutorial considerabil pe site-ul Qt ( doc-snapshot.qt-project.org /4.8/modelview.html ) pentru programarea modelului/vizualizării.
adăugat autor cmannett85, sursa
Crearea unui model rudimentar necesită reimplementarea a doar câteva metode enumerate în docs: qt -project.org/doc/qt-4.8/qabstractitemmodel.html#subclassin‌ g
adăugat autor Kuba Ober, sursa
Verificați cum este impementat QStandardItemModel. Acesta utilizează QAbstractItemModel pentru a vă oferi câteva sugestii despre cum să creați propriul model
adăugat autor Kamil Klimek, sursa