Qt4 und QListBox?

Alles rund um die Programmierung mit Qt
Antworten
Gartenzwerg
Beiträge: 33
Registriert: 19. Oktober 2004 08:10

Qt4 und QListBox?

Beitrag von Gartenzwerg »

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
Volker
Beiträge: 343
Registriert: 30. Juni 2005 05:27

QTreeView

Beitrag von Volker »

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.

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;
wenn man noch anpassen will, ob Spaltennamen angezeigt werden, bzw. wie diese benannt werden, dann muss noch zusätzlich die

Code: Alles auswählen

QVariant headerData(int section, Qt::Orientation orientation, int role) const;
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. :oops:

Grüße
Volker
Gartenzwerg
Beiträge: 33
Registriert: 19. Oktober 2004 08:10

Beitrag von Gartenzwerg »

danke, werd mir das in den nächsten Tagen mal durch den Kopf gehen lassen und ausprobieren. Dann muss ich sicher nochmal spezifischere Fragen stellen.

Gartenzwerg
Antworten