如何创建网格样式QListWidget?

时间:2016-05-19 18:22:52

标签: python qt pyqt qt4 pyside

我目前正在制作一个我希望以网格样式设置的列表,并且好奇我是如何做到的。我不相信表会起作用,因为我希望它的格式如下:

option  option  option  option

option  option  option  option

option  option  option  option

option  option  option  option
每行

~4个选项,没有进一步的信息拆分成列,其中每一行代表一个ListWidgetItem。

3 个答案:

答案 0 :(得分:4)

你正在寻找这样的事情:

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然后从那里开始,直到获得所需的行为。

答案 1 :(得分:1)

取决于,如果您有静态的项目数,则可以使用QGridLayout。

如果您有QAbstractListModel,您可以通过实现QTbstractView和QAbstractItemDelegate来实现您自己的视图,这是QTableView所做的。

答案 2 :(得分:0)

您可能想要使用QTableWidgetQTreeWidget。当一行中的项目与单个项目密切相关时(即每一行都是一个项目,并且每一列都是该项目的属性),我发现使用QTreeWidget更容易。< / p>

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