我目前正在制作一个我希望以网格样式设置的列表,并且好奇我是如何做到的。我不相信表会起作用,因为我希望它的格式如下:
option option option option
option option option option
option option option option
option option option option
每行~4个选项,没有进一步的信息拆分成列,其中每一行代表一个ListWidgetItem。
答案 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)
您可能想要使用QTableWidget
或QTreeWidget
。当一行中的项目与单个项目密切相关时(即每一行都是一个项目,并且每一列都是该项目的属性),我发现使用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'])