2016-06-14 22 views
1

Ich möchte eine mehrspaltigen Liste angezeigt werden, so dass, wenn eine Spalte nach unten im Fenster nachfolgenden Elemente gefüllt ist, wird in der nächsten Spalte, das wie etwas angezeigt:Qt Beste Kontrolle für Multi-Säulen-Liste?

Item1 Item4 Item7 
Item2 Item5 Item8 
Item3 Item6 Item9 

Wenn das Fenster der Größe verändert wird Elemente sollten Spalten ändern, sodass die Liste nicht über den unteren Rand des Fensters hinaus erweitert wird.

Ich versuchte dies mit einem QTableWidget, aber es ist ziemlich langsam, wenn Sie die Größe des Fensters ändern, weil Sie alle QTableWidgetItems an neue Positionen verschieben müssen, und die Wartung der ausgewählten Elemente ist ein bisschen ein Schmerz.

Gibt es eine bessere Kontrolle dafür, oder ist QTableWidget die beste Option?

Antwort

1

Sie suchen nach QGridView. Es funktioniert mit Qt's Model/View Paradigm unter Annahme eines ListModel.

Basierend auf dem Raster-Layout, das Sie angegeben haben, werden Sie die flow property-FlowTopToBottom zu erreichen, so etwas setzen möchten:

enter image description here

+0

Vielen Dank, das ist genau das, was ich suchte. – Assoluto

+0

@Assoluto Yup, das ist eigentlich ein besonderes, dass es in QtQuick 2.5 ist Aber für die meisten Ihrer Modelle/Ansichten finden Sie sie in dieser Liste: http://doc.qt.io/qt-5/model-view -programming.html # Modellansicht-Klassen –