2011-06-21 18 views
2

我一直在玩Qt,並遇到一個小問題。在QTableView列中顯示QAbstractListModel項目

我想顯示圖片列表作爲圖標表。現在,我通過繼承QAbstractTableModel並將其插入QTableView的子類來完成此操作。

在我看來,這太過複雜的代碼,模型和視圖(特別是當試圖編輯/附加項目)。當試圖將模型實現爲QAbstractListModel時,項目顯示爲表格行。

有沒有辦法讓QTableView顯示項目作爲列,而不是?
編輯:這樣的項目從左到右呈現在一行中,幷包裝到一個新的行。

或者最好是在任何情況下都使用表格模型作爲表格視圖並解決這些問題?

值得一提的是我使用基於Qt Jambi的Qt的C#綁定。

回答

3

QListView具有您正在討論的功能。

如果你不需要任何特定於QTableView的功能,那麼我會建議切換。

如果您設置「isWrapping」,那麼列表將從頂部開始,向下到底部,然後換行到新列。

集「流」到LeftToRight以顯示行,而不是列

您可能還需要設置「resizeMode」列表中,而不是固定的,進行調整。當列表調整大小時,它會自動移動。

希望有所幫助。

正如旁註,here是FlowLayout示例。所以如果你只是想在一個自我調整的網格中顯示一組圖像,這將爲你做到這一點沒有列表/表的所有開銷。但是,它不會給你任何選擇/編輯功能或任何佈局。

+0

謝謝!這真的是我正在尋找的。 – GeReV

0

我在這裏不明白。你實現了TableModel,這樣你就可以用最合適的方式準備數據。假設你有數據A,B,C,D,那麼你可以返回A(00),B(01),C(10),D(11),或者例如A(00),C(01),B (10),d(11)。你想要做什麼?

+0

就像你在第一個選項中說的那樣。將項目顯示爲A-> B-> C-> D,其中它將從左到右呈現單行中的項目,並繞回到新行。 – GeReV