Oto co próbuję dostać (to QTableView
widget + MVC podstawie QAbstractTableModel
z pomnożyć delegatów):Jak utworzyć model/widok QTableView z niestandardowymi (nieedytowalnymi) uczestnikami?
Uwagi:
Deleguje nie pracującego jako redaktorzy, to TYLKO widzowie! Nie mam do edycji modelu z tym widokiem tabeli.
Delegaci muszą być wykonalni. Oznacza to, że całkowita wysokość NIEBIESKIEGO rzędu może wynosić 25 pikseli lub 250 pikseli.
MV jest proste dane:
1-RZĘDOWY: CompanyName1 Nazwa1, NAME2, NAME3 INNE DANE
2-RZĘDOWY: CompanyName2 SingleName1 INNE DANE
3ROW: CompanyName3 Nazwa1, name2 innych danych i tak dalej. ..
Pytanie:
- Czy można na przykład utworzyć niestandardowego uczestnika (
QItemDelegate
lubQStyleItemDelegate
) do drugiej kolumny, jak na powyższym obrazku? A jeśli to możliwe, może możesz podać mi przykłady lub linki do zasobów, gdzie mogę na nie spojrzeć.
PS. Tak, obejrzałem wszystkie przykłady z delegatami, ale po prostu nie rozumiem, jak zrobić to, co chcę.
PSS. QTableView
->setIndexWidget()
Myślę, że to nie jest dobry pomysł. Ale metody QTableView
->setItemDelegateForColumn(myCustomDelegate)
są lepsze!
P3S. Nie szukam rozwiązania dla klasy QTableWidget
...
Dziękuję za odpowiedzi! :-)
Aktualizacja # 1:
myślę, że:
Delegaci są wykorzystywane wyłącznie do edycji (na przykład, gdy pracujemy z modelem/view object) i zarządzaj podobnymi przedmiotami (all/just column/just row).
Niestandardowe widżety są lepsze, ale nie spotkałem ich w darmowych projektach Qt. I nie jest łatwo uzyskać ładny i poprawny kod tego rodzaju widżetów ...
Dodatek:
- Oto link podobieństwa pytanie.
Czy możesz opisać sposób pobierania danych z modelu? Czy używasz niestandardowych ról? Na przykład, w jaki sposób mogę uzyskać "CompanyName2" dla określonego wiersza? – Casey
Na razie nie mam takiego rozwiązania. Tylko 'QTreeWidget' + moje niestandardowe widżety. W moim pytaniu szukam odpowiedzi, która będzie zawierała informacje o łączeniu rzeczy, takie jak: widok tabeli, modele i delegaci razem ... – mosg
@mosg byłoby dużo łatwiej odpowiedzieć, jeśli zawarłeś pełny minimalny przykład pracy w którym chcesz zrobić X. Szczerze mówiąc, znalazłem przykład delegata spinboksa bardzo pomocny i prosty. http://qt-project.org/doc/qt-4.8/itemviews-spinboxdelegate.html. Pracuję w Pythonie, więc nie mogę pomóc zbyt wiele ze szczegółami, poza odpowiedzią poniżej: jest to całkiem proste - wystarczy ponownie zaimplementować farbę dla modelu tylko do odczytu. Reszta prac sięga do klasy podstawowej delegatów. – neuronet