2016-05-19 6 views
2

私は現在、グリッドスタイルで設定したいリストに取り組んでいます。どうすればいいか分かりました。各行は単一ListWidgetItemを表し、列に行となし、さらに情報分割あたりグリッドスタイルQListWidgetを作成するには?

option option option option 

option option option option 

option option option option 

option option option option 

〜4オプション:私は、私はそれがこのようにフォーマットしたいのですので、テーブルが動作するとは思いません。

答えて

2

あなたはこのような何かを探している:

QListWidget *listWidget = new QListWidget; 

//Lays out horizontally instead of vertically 
listWidget->setFlow(QListView::LeftToRight); 

//Dynamically adjust contents 
listWidget->setResizeMode(QListView::Adjust); 

//This is an arbitrary value, but it forces the layout into a grid 
listWidget->setGridSize(QSize(64, 64)); 

//As an alternative to using setGridSize(), set a fixed spacing in the layout: 
listWidget->setSpacing(someInt); 

//And the most important part: 
listWidget->setViewMode(QListView::IconMode); 

のQt Designerでこれらのプロパティと遊びます。 QListView::IconModeを設定し、そこからあなたが望む動作を得るまで開始します。

+0

ありがとうございます、私のニーズを満たす唯一の答えはあなたのものでした。私は明日仕事に入るときにそれを打つつもりです! –

+0

おっと。私はあなたが4列で最大にしたいと気づいた。 'QListWidget'は利用可能なすべてのスペースを埋めるので、その動作を取得するには、少し調整する必要があります。 –

+2

私はこの情報を入手したら心配する必要はなく、かなり簡単でした。好奇心をそそる人のために、本当にラッピングを設定するだけで、あなたは次のようなことをします:list_width = items_per_row * list_item_width –

1

静的な数のアイテムがある場合は、QGridLayoutを使用できます。

QAbstractListModelをお持ちの場合は、QAbstractItemViewとQAbstractItemDelegateを実装することで、独自のビューを実装できます。これはQTableViewの機能です。

+0

これは、オンザフライで追加される項目がさまざまです。 QAbstractViewを使ってレイアウトをどのように変更するのかよく知られていないので、私はpysideを使用していますので、ほとんどすべてのことがqtデザイナーです。 –

+0

@ Obj3ctiv3_C_88:私は決してpysideやqtデザイナーに触れなかったので、私はあなたを助けることはできません。ごめんなさい。 –

0

おそらくQTableWidgetまたはQTreeWidgetを使用します。 1つの行の項目が1つの項目と密接に関連している場合(つまり、各行が項目であり、各項目がその項目の属性である場合)、QTreeWidgetを使用する方が簡単です。

tree = QtGui.QTreeWidget() 
tree.setHeaderLabels(['Name', 'Age', 'Weight']) 
item = QtGui.QTreeWidgetItem(tree, ['John Doe', '24', '150']) 
item = QtGui.QTreeWidgetItem(tree, ['Jane Doe', '21', '120']) 
関連する問題