2013-01-01 8 views
14

Czekam na zasadniczo replikować to:Jakiego widgetu Qt użyć do zaimplementowania przeglądarki miniatur obrazu (wyświetlanie kafelków)?

enter image description here

Jaki jest najbardziej odpowiedni pojemnik Qt widget do wyświetlania moje własne widgety zawierające obraz + indeks? Patrzę na QTableView i wygląda na to, że powinien mieć ustawioną liczbę wierszy/kolumn, podczas gdy chciałbym, aby mój program zmieniał układ w zależności od szerokości okna (tak, aby nie było poziomego przewijania) i dodawanie nowego widżetu powinien zrobić z addWidget(QWidget * w), a nie setWidget(int row, int column, QWidget * w). Czy istnieje lepszy składnik niż QTableView (który wymaga dużego kodowania dla mojego zadania)?

+0

Zastanawiam się, czy znalazłeś rozwiązanie, które pozwala rzeczywiście używać niestandardowych widgetów dla przedmiotów? – Curtwagner1984

Odpowiedz

36

Należy użyć QListWidget (lub QListView i podklasę QAbstractItemModel) i ustaw jego tryb widok do IconMode.

przykład:

m_listeWidget->setViewMode(QListWidget::IconMode); 

m_listeWidget->setIconSize(QSize(200,200)); 

m_listeWidget->setResizeMode(QListWidget::Adjust); 

m_listeWidget->addItem(new QListWidgetItem(QIcon("../earth.jpg"),"Earth")); 
m_listeWidget->addItem(new QListWidgetItem(QIcon("../tornado.jpg"),"Tornado")); 
m_listeWidget->addItem(new QListWidgetItem(QIcon("../ics.jpg"),"Wallpaper")); 

Wynik:

enter image description here

+0

To rzeczywiście działa. Chciałem użyć mojego własnego widgetu jako elementu listy, ale każde działające rozwiązanie jest lepsze niż jakikolwiek niedziałający, domyślam się :) –

+0

świetne rozwiązanie ... – Goddard

1

zdecydowanie QTableView, pomocą Custom itemDelegate przedstawienie każdego bloku wykonuje własny widget do wyświetlania obrazu i Tytuł tekstu:

+0

Nie QTableWidget/QListWidget? Obecnie próbuję QListWidget, ale problem sprawia, że ​​wyświetla widżety w ogóle. QTableView oznaczałoby, że muszę ręcznie obsługiwać zmiany rozmiaru, aby odpowiednio zmienić liczbę kolumn, wydaje się zbyt dużym nakładem pracy. Ponadto, dlaczego potrzebuję delegata? Wszystko, co chcę zrobić, to wyświetlać obraz statyczny + widżety tekstowe. Czy nie ma prostszego sposobu na osiągnięcie tego? –

+0

Zaletą QTableView jest swobodne posługiwanie się modelem danych i ItemWidget, dzięki czemu można niddować niestandardowe implementacje klasy datamodel i itemDelegate. Wydaje się, że wiele do zrobienia, ale daje więcej wygody. Korzystając z itemDelegate, możesz łatwo dostosować własny styl przeglądarki i tytuł, i tak dalej. Zrobiłem to sam w mojej aplikacji. – yodabox

Powiązane problemy