Hallo,
ich möchte dem Nutzer einige Daten präsentieren. Bei Qt3 habe ich für diesen Zweck ein QListBox mit mehreren Spalten genutzt, jedoch fehlt mir diese Funktion in der Qt4. Die neue Model/View-Technik verwirrt mich etwas. Des Weiteren ist mein Englisch sehr schlecht, was die Erarbeitung aus der Doku erschwert. Welche Alternative habe ich zu einer mehrspaltigen QListBox aus Qt3? Ein QTableWidget/View? Generelle Frage: Wann sollte man die View-Version eine Klasse und wann die Widget-Version nutzen?
Gartenzwerg
Qt4 und QListBox?
QTreeView
Hallo,
hab mich neulich kurz mal mit ähnlichem Problem beschäftigt. Ich wollte Dateien in einer Liste anzeigen und neben den Dateinamen in der ersten Spalte auch Attribute in weiteren Spalten darstellen. Zunächst dachte ich auch an QTableView. Da aber dort immer Zeilenmarkierungen am Rand waren, hab ich QTreeView verwendet und dort einfach mit setRootIsDecorated(false) die Baum Markierungen ausgeschaltet.
Um Einfluss auf die Darstellung der Daten zu nehmen, hab ich dann ein FileInfoModel als Unterklasse von QAbstractTableModel geschrieben und mich dabei an dem QDirModel orientiert.
Darin müssen zwingerderweise nur die drei folgenden Methoden implementiert werden.
wenn man noch anpassen will, ob Spaltennamen angezeigt werden, bzw. wie diese benannt werden, dann muss noch zusätzlich die
implementiert werden.
Wie diese zu implementieren sind, kann man eigentlich sehr gut an dem QDirModel sehen. Falls ich dir bis hier mit meinem Vorschlag weiterhelfen konnte und Du noch fragen hast, melde dich einfach nochmal.
Was deine andere Frage angeht, bzgl. Widget oder View. Ich hab mir die Widget Klassen noch nicht so genau angeschaut, aber ich muss sagen ich lerne die Vorteile der Model/View Geschichten langsam zu schätzen und nehme auch an, dass es sich dort mehr lohnt Zeit zu investieren, da sie insgesamt den mächtigeren Funktionsumfang bieten. Aber wie gesagt, ich hab mir die Widget Klassen noch gar nicht richtig angeschaut.
Grüße
Volker
hab mich neulich kurz mal mit ähnlichem Problem beschäftigt. Ich wollte Dateien in einer Liste anzeigen und neben den Dateinamen in der ersten Spalte auch Attribute in weiteren Spalten darstellen. Zunächst dachte ich auch an QTableView. Da aber dort immer Zeilenmarkierungen am Rand waren, hab ich QTreeView verwendet und dort einfach mit setRootIsDecorated(false) die Baum Markierungen ausgeschaltet.
Um Einfluss auf die Darstellung der Daten zu nehmen, hab ich dann ein FileInfoModel als Unterklasse von QAbstractTableModel geschrieben und mich dabei an dem QDirModel orientiert.
Darin müssen zwingerderweise nur die drei folgenden Methoden implementiert werden.
Code: Alles auswählen
/// returns the number of rows under the given parent.
int rowCount ( const QModelIndex & parent = QModelIndex() ) const;
Code: Alles auswählen
/// returns the number of columns for the given parent
int columnCount ( const QModelIndex & parent = QModelIndex() ) const;
Code: Alles auswählen
/// Returns the data stored under the given role for the item referred to by the index
QVariant data ( const QModelIndex & index, int role = Qt::DisplayRole ) const;
Code: Alles auswählen
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
Wie diese zu implementieren sind, kann man eigentlich sehr gut an dem QDirModel sehen. Falls ich dir bis hier mit meinem Vorschlag weiterhelfen konnte und Du noch fragen hast, melde dich einfach nochmal.
Was deine andere Frage angeht, bzgl. Widget oder View. Ich hab mir die Widget Klassen noch nicht so genau angeschaut, aber ich muss sagen ich lerne die Vorteile der Model/View Geschichten langsam zu schätzen und nehme auch an, dass es sich dort mehr lohnt Zeit zu investieren, da sie insgesamt den mächtigeren Funktionsumfang bieten. Aber wie gesagt, ich hab mir die Widget Klassen noch gar nicht richtig angeschaut.
Grüße
Volker
-
- Beiträge: 33
- Registriert: 19. Oktober 2004 08:10